2017-02-10 4 views
0

mein Code:C#, wenn die Bedingung nicht wahr etwas tut, ist

string[] code = new string[9]; 
int[] intCode = new int[9]; 

int cd = 0, dvd = 0, video = 0, book = 0; 
for (int i = 0; i < 10; i++) 
{ 

    Console.Write("Enter code#{0}: ",i+1); 
    code[i] = Console.ReadLine(); 
    if (code[i].Length==5) 
    { 
     intCode[i] = Convert.ToInt32(code[i]); 
     intCode[i] /= 100000; 
     if (intCode[i] == 1) 
     { 
      cd++; 
      break; 

     } 
     if (intCode[i] == 2) 
     { 
      dvd++; 
      break; 
     } 
     if (intCode[i] == 3) 
     { 
      video++; 
      break; 
     } 
     if (intCode[i] == 4) 
     { 
      book++; 
      break; 
     } 
    } 
    else 
    { 
     Console.WriteLine("INVALID CODE"); 

    } 

} 

Im Grunde, was ich will ist anderes tun {hier etwas tun}, um den Benutzer zu fragen, um die Nummer REINPUT, anstatt zu gehen für Schleife und icrementing ich und frage den Benutzer für neue Eingabe.

+3

Sie‘ Ich habe von der "Nicht" -Bedingung gehört, oder? Es sieht so aus, als hätten Sie einen logischen Fehler in Ihrem Code. Denken Sie mehr darüber nach, wie Sie als Person das ausarbeiten würden und versuchen Sie, es niederzuschreiben, um jemandem zu erklären, der es nicht weiß – BugFinder

+4

Oder eine 'while'-Schleife vielleicht? Es ist schwer zu sagen, was Sie hier suchen ... –

+0

Sie teilen eine 5-stellige Nummer durch eine 6-stellige Nummer und erwartet das Ergebnis 1, 2, 3 oder 4. Wenn ich du wäre, würde ich überprüfe einfach 'if (code [i] [0] == '1')' etc. stattdessen. –

Antwort

1

Im else-Block:

else 
{ 
    Console.WriteLine("INVALID CODE"); 
    i -= 1; 
} 
+0

Vielen Dank :) –

+0

Ich rate nur, dass Sie Benutzer wollen es neu zu tun, also tu ich es wieder, dann ist es gut. – PSo

+0

ja funktioniert gut. –

0

eine Kombination aus während und Schalter verwenden:

 string[] code = new string[9]; 
     int[] intCode = new int[9]; 
     int cd = 0, dvd = 0, video = 0, book = 0; 
     for (int i = 0; i < 10; i++) 
     { 
      bool isCorrectInput = false; 
      while (!isCorrectInput) 
      { 
       isCorrectInput = true; 
       Console.Write("Enter code#{0}: ", i+1); 
       code[i] = Console.ReadLine(); 
       if (code[i].Length == 1) 
       { 
        intCode[i] = Convert.ToInt32(code[i]); 
        // intCode /= 100000; 
        switch (intCode[i]) 
        { 
         case 1: 
          cd++; 
          break; 
         case 2: 
          dvd++; 
          break; 
         case 3: 
          video++; 
          break; 
         case 4: 
          book++; 
          break; 
         default: 
          isCorrectInput = false; 
          break; 
        } 
       } 
       else 
        isCorrectInput = false; 
       if (!isCorrectInput) 
        Console.WriteLine("INVALID CODE ENTERED!"); 
      } 
     } 

EDIT: Sollte das, was Sie jetzt wollen, korrigiert Ihre Fehler

+0

funktioniert nicht. Es heißt ungültige Eingabe, auch wenn die Eingabe gültig ist. –

+0

Sie haben nach einer Möglichkeit gefragt, den Benutzer die Nummer neu eingeben zu lassen, hier ist es das Problem, dass Ihre Eingabe nicht gültig sein kann, weil Sie die Länge für gleich 5 und prüfen dann dividiere durch 100000, jeder 5-stellige Wert, wenn geteilt durch 100000 und geparst zu int wird 0, und 0 wird nicht in deinem Szenario behandelt, so dass es unmöglich ist, richtig zu sein – Pedro

Verwandte Themen