मैं मुख्य कार्य के लिए परिणाम को ले जाने के लिए एक विधि में लूप के लिए उपयोग कर रहा हूं। मैं एक वर्ष का महीना पाने के लिए लूप के लिए उपयोग करने की कोशिश कर रहा हूं और इसे मुख्य फ़ंक्शन से आउटपुट पर दे रहा हूं।

मैंने लूप के लिए एक नेस्टेड नेस्ट किया है जो मुझे लगता है कि शायद बेमानी है क्योंकि लूप के लिए वैसे भी अंत तक गिना जाएगा। यह शायद कोड में एक बुनियादी पर्याप्त समस्या है, लेकिन मैं इसे इतने लंबे समय से घूर रहा हूं कि मुझे लगता है कि यह मेरे अंत में जल रहा है।

आउटपुट संबंधित महीने को चुनने के बजाय सभी महीनों के लिए "डोंट एक्जिस्ट" लौटा रहा है। मैं लूप के लिए प्रासंगिक महीने को कैसे निकालूं या क्या मेरे पास अब तक कोड किए गए तरीके से संभव है?

namespace Month_Function_Call
    {
class Program
{
    public static String month_name(int month)
    {
        String result;
        result = "a";
        for (int i = 0; i < 12; ++i )
        {
            if (i == 0)
            {
                result = "January";
            }
            if (i == 1)
            {
                result = "February";
            }
            if (i == 2)
            {
                result = "March";
            }
            if (i == 3)
            {
                result = "April";
            }
            if (i == 4)
            {
                result = "May";
            }
            if (i == 5)
            {
                result = "June";
            }
            if (i == 6)
            {
                result = "July";
            }
            if (i == 7)
            {
                result = "August";
            }
            if (i == 8)
            {
                result = "September";
            }
            if (i == 9)
            {
                result = "October";
            }
            if (i == 10)
            {
                result = "November";
            }
            if (i == 11)
            {
                result = "December";
            }
            else
            {
                result = "N/A";
            }


        }
            return result;
    }
    static void Main(string[] args)
    {
        Console.WriteLine("Month 1: " + month_name(1));
        Console.WriteLine("Month 2: " + month_name(2));
        Console.WriteLine("Month 3: " + month_name(3));
        Console.WriteLine("Month 4: " + month_name(4));
        Console.WriteLine("Month 5: " + month_name(5));
        Console.WriteLine("Month 6: " + month_name(6));
        Console.WriteLine("Month 7: " + month_name(7));
        Console.WriteLine("Month 8: " + month_name(8));
        Console.WriteLine("Month 9: " + month_name(9));
        Console.WriteLine("Month 10: " + month_name(10));
        Console.WriteLine("Month 11: " + month_name(11));
        Console.WriteLine("Month 12: " + month_name(12));
        Console.WriteLine("Month 43: " + month_name(43));
        Console.ReadKey();
    }
}
c#
0
Damo 23 नवम्बर 2015, 18:09

6 जवाब

सबसे बढ़िया उत्तर

आप switch का उपयोग करके इस क्लीनर को बना सकते हैं

 switch (month)
        {
            case 0: return "January";
            case 1: return "February";
            case 2: return "March";
            case 3: return "April";
            case 4: return "May";
            case 5: return "June";
            case 6: return "July";
            case 7: return "August";
            case 8: return "September";
            case 9: return "October";
            case 10: return "November";
            case 11: return "December";
            default: return "N/A";
        }
5
drvolcano 23 नवम्बर 2015, 15:19

मुझे लगता है कि DateTimeFormat से GetMonthName का उपयोग करना बेहतर होगा। यह आपको उपयोगकर्ताओं को सक्रिय संस्कृति में नाम देगा। (आप अपनी पसंद के किसी भी कल्चर को बेशक कठिन कोड कर सकते हैं) फिर ऊपरी मामले के रूप में पहला चरित्र प्राप्त करने के लिए ToTitleCase

public static String month_name(int month)
{
   if(month < 1 || month > 12) 
      return "N/A";
   var culture = CultureInfo.CurrentCulture;
   var name = culture.DateTimeFormat.GetMonthName(month);
   return culture.TextInfo.ToTitleCase(name);
}
7
Magnus 23 नवम्बर 2015, 15:31

इसके बजाय कुछ ऐसा करें

string[] months = new string[12] {"January", "February", "March" }; // Input all months to this array

if (index <= -1 || index > 12) return "N/A";
return months[index];

इस कोड को getMonthName () फ़ंक्शन में डालें

4
Kevin Cruijssen 23 नवम्बर 2015, 16:11

लूप का उपयोग न करें और यदि-तो। आपको जो चाहिए वो है डिक्शनरी।

static Dictionary<int, string> _monthName = new Dictionary<int, string>
{
    {1,"January" }, // if zero based start from 0
    {2,"February" },
    {3,"March" },
    {4,"April" },
    {5,"May" },
    {6,"June" },
    {7,"July" },
    {8,"August" },
    {9,"September" },
    {10,"October" },
    {11,"November" },
    {12,"December" },
};

private static string GetMonthName(int i)
{
    var result = "";
    if (_monthName.TryGetValue(i, out result))
    {
        return result;
    }
    return "N/A";
}
static void Main(string[] args)
{
    Console.WriteLine("Month 1: " + GetMonthName(1));
    Console.WriteLine("Month 2: " + GetMonthName(2));
    Console.WriteLine("Month 3: " + GetMonthName(3));
    Console.WriteLine("Month 4: " + GetMonthName(4));
    Console.WriteLine("Month 5: " + GetMonthName(5));
    Console.WriteLine("Month 6: " + GetMonthName(6));
    Console.WriteLine("Month 7: " + GetMonthName(7));
    Console.WriteLine("Month 8: " + GetMonthName(8));
    Console.WriteLine("Month 9: " + GetMonthName(9));
    Console.WriteLine("Month 10: " + GetMonthName(10));
    Console.WriteLine("Month 11: " + GetMonthName(11));
    Console.WriteLine("Month 12: " + GetMonthName(12));
    Console.WriteLine("Month 43: " + GetMonthName(43));
    Console.ReadKey();
}
3
M.kazem Akhgary 23 नवम्बर 2015, 15:19

मेरी राय में आपको इस मामले में लूप में दिए गए कथनों का उपयोग करना चाहिए, क्योंकि यह पर्याप्त रूप से पठनीय नहीं है और बेहतर तरीका यह होगा कि टाइप स्ट्रिंग की एक सरणी बनाई जाए, जिसमें महीनों के सभी नाम होंगे और इसे पुनरावृत्त करना होगा सरणी। आपका कोड इस प्रकार होगा:

public static String month_name(int month) {
        String result;
        result = "a";
        // for the sake of readability I have split the line
        String[] allMonths = { 
                              "N/A", "January", "February", "March", "April",
                              "May", "June", "July", "August", "September", 
                              "October", "November", "December" 
                          };
        if (month >= 0 && month <= 12)
            result = allMonths[month];
        else
           result = "N/A";

        return result;
    }

    static void Main(string[] args) {
        Console.WriteLine("Month 1: " + month_name(1));
        Console.WriteLine("Month 2: " + month_name(2));
        Console.WriteLine("Month 3: " + month_name(3));
        Console.WriteLine("Month 4: " + month_name(4));
        Console.WriteLine("Month 5: " + month_name(5));
        Console.WriteLine("Month 6: " + month_name(6));
        Console.WriteLine("Month 7: " + month_name(7));
        Console.WriteLine("Month 8: " + month_name(8));
        Console.WriteLine("Month 9: " + month_name(9));
        Console.WriteLine("Month 10: " + month_name(10));
        Console.WriteLine("Month 11: " + month_name(11));
        Console.WriteLine("Month 12: " + month_name(12));
        Console.WriteLine("Month 43: " + month_name(43));
        Console.ReadKey();
    }

आशा है कि यह मदद की :)

1
Rafichu 23 नवम्बर 2015, 15:29

स्विच-केस स्टेटमेंट का उपयोग करना यहां सबसे अच्छा विकल्प है।

लेकिन, यदि आप इसका उपयोग करना नहीं जानते हैं, तो आपको For स्टेटमेंट को हटा देना चाहिए, क्योंकि यह पूरी तरह से गैर-समझ है।

 //for (int i = 0; i < 12; ++i )
    //{

    //}
0
alessalessio 23 नवम्बर 2015, 16:43