2010-03-06 13 views
1

Je faisais cet extrait de code simple pour générer le nom du mois en utilisant le numéro de jour, mais j'ai reçu l'erreur Cannot implicitly convert type 'int' to 'string'. Je n'essaie pas de changer MonthName en int!Erreur "Impossible de convertir le type 'int' en 'chaîne'"

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

Ce code ne tient pas compte des années bissextiles. –

+0

ne devrait-il pas avoir l'étiquette de devoirs? –

+0

oopz .. ddnt knw abt it .. im un débutant ici .. il tag t 4 sûr nxt ym: D – user282659

Répondre

2

Il est le switch où vous l'utilisez comme un int - Vous vouliez probablement dire passer monthNum à l'instruction switch.

(aussi: Ne pas si vous avez monthNum == ... dans tous les if s dans la première partie?)

1

Modifier le passage à

switch (monthNum) 
+0

Résolu THankss: D – user282659

0

nomMois est une chaîne de sorte que vos cas de commutation doit être une chaîne aussi.

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); 
    } 
Questions connexes