2010-03-06 223 views
1

我正在做这个简单的代码片段来使用日期编号生成月份名称,但我得到了错误Cannot implicitly convert type 'int' to 'string'。我不是想把MonthName改成int!错误“无法将类型'int'隐式转换为'字符串'”

class Module04 
{ 
    public static void Exercise01() 
    { 
     Console.WriteLine("Please Enter a day number between 1 and 365: "); 
     string line = Console.ReadLine(); 
     int dayNum = int.Parse(line); 

     int monthNum = 0; 

     if (dayNum <= 31) // January 
     { 
      goto End; 
     } 
     else 
     { 
      dayNum -= 31; 
      monthNum++; 
     } 

     if (dayNum <= 28) // February 
     { 
      goto End; 
     } 
     else 
     { 
      dayNum -= 28; 
      monthNum++; 
     } 

     if (dayNum <= 31) // March 
     { 
      goto End; 
     } 
     else 
     { 
      dayNum -= 31; 
      monthNum++; 
     } 

     if (dayNum <= 30) // April 
     { goto End; } 
     else 
     { 
      dayNum -= 30; 
      monthNum++; 
     } 

     if (dayNum <= 31) // May 
     { goto End; } 
     else 
     { 
      dayNum -= 31; 
      monthNum++; 
     } 

     if (dayNum <= 30) // June 
     { goto End; } 
     else 
     { 
      dayNum -= 30; 
      monthNum++; 
     } 

     if (dayNum <= 31) // July 
     { goto End; } 
     else 
     { 
      dayNum -= 31; 
      monthNum++; 
     } 

     if (dayNum <= 31) // August 
     { goto End; } 
     else 
     { 
      dayNum -= 31; 
      monthNum++; 
     } 

     if (dayNum <= 30) // September 
     { goto End; } 
     else 
     { 
      dayNum -= 30; 
      monthNum++; 
     } 

     if (dayNum <= 31) // October 
     { goto End; } 
     else 
     { 
      dayNum -= 31; 
      monthNum++; 
     } 

     if (dayNum <= 30) // November 
     { goto End; } 
     else 
     { 
      dayNum -= 30; 
      monthNum++; 
     } 

     if (dayNum <= 31) // December 
     { goto End; } 
     else 
     { 
      dayNum -= 31; 
      monthNum++; 
     } 

    End: 

     string monthName; 

     switch (monthName) 
     { 
      case 0: 
       monthName = "January"; break; 
      case 1: 
       monthName = "February"; break; 
      case 2: 
       monthName = "March"; break; 
      case 3: 
       monthName = "April"; break; 
      case 4: 
       monthName = "May"; break; 
      case 5: 
       monthName = "June"; break; 
      case 6: 
       monthName = "July"; break; 
      case 7: 
       monthName = "August"; break; 
      case 8: 
       monthName = "September"; break; 
      case 9: 
       monthName = "October"; break; 
      case 10: 
       monthName = "November"; break; 
      case 11: 
       monthName = "December"; break; 
      default: 
       monthName = "Not yet Done"; break; 
     } 
     Console.WriteLine("{0} {1}", dayNum, monthName); 
    } 
} 
+0

此代码没有考虑闰年。 – 2010-03-06 05:23:40

+0

不应该有这个作业标签吗? – 2010-03-06 06:20:12

+0

oopz .. ddnt knw abt it ..我是一个新手在这里.. il标签t 4肯定nxt ym:D – user282659 2010-03-06 06:38:03

回答

2

这是你使用它作为一个int其中switch - 你大概意思传递给monthNum switch语句。

(另外:你不应该有monthNum == ...在所有if S IN的第一部分的?)

1

更改开关

switch (monthNum) 
+0

解决THankss:D – user282659 2010-03-06 05:31:43

0

MONTHNAME是一个字符串,那么你的交换机的情况下应该是一个字符串也。

string monthName; 

      switch (monthName) 
      { 
       case "0" : 
        monthName = "January"; break; 
       case "1" : 
        monthName = "February"; break; 
       case "2" : 
        monthName = "March"; break; 
       case "3" : 
        monthName = "April"; break; 
       case "4" : 
        monthName = "May"; break; 
       case "5" : 
        monthName = "June"; break; 
       case "6" : 
        monthName = "July"; break; 
       case "7" : 
        monthName = "August"; break; 
       case "8" : 
        monthName = "September"; break; 
       case "9" : 
        monthName = "October"; break; 
       case "10" : 
        monthName = "November"; break; 
       case "11" : 
        monthName = "December"; break; 
       default : 
        monthName = "Not yet Done"; break; 
      } 
     Console.WriteLine("{0} {1}", dayNum, monthName); 
    } 
相关问题