2016-11-28 1 views
0

Ich bin neu in C# Entwicklung und ich versuche, eine Auto-Konsole-Anwendung zu erstellen. Der Teil, mit dem ich zu kämpfen habe, ist, ich erstelle eine Liste, die den Benutzer den Wert der Autos eingeben lässt und sobald der Benutzer fertig ist, sollte er/sie einfach Enter drücken können, um den Wert aller hinzugefügten Autos anzuzeigen oben. HierProbleme mit der Umwandlung von Zeichenfolgen und Ints

ist der Fehler von dem Compiler:

An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll Additional information: Input string was not in a correct format.

Hier ist der Code, von wo aus ich die Störung erhalte:

Console.Clear(); 
List<int> myCars = new List<int>(); 

Console.WriteLine("Enter the car into the lot"); 
int input = int.Parse(Console.ReadLine()); 
myCars.Add(input); 

while (input.ToString() != "") //The != is not equal to 
{ 
    Console.WriteLine("Please enter another integer: "); 
    input = int.Parse(Console.ReadLine()); //This doesent work I dont know why 
    int value; 
    if (!int.TryParse(input.ToString(), out value)) 
    { 
     Console.WriteLine("Something happened I dont know what happened you figure it out I dont want to"); 
    } 
    else 
    { 
     myCars.Add(value); 
    } 
} 

if (input.ToString() == "Done") 
{ 
    int sum = 0; 
    foreach (int value in myCars) 
    { 
     sum += value; 
     Console.WriteLine("The total of all the cars on the lot are : " + " " + value.ToString()); 
    } 
    Console.ReadLine(); 
} 
+0

https://dotnetfiddle.net/PYVofI hier ist eine Arbeits versagt Lösung. – C1sc0

+0

Ich Parsed zweimal, weil es sagte, dass Eingabe nicht in ein int umgewandelt werden kann. Muss ich die Liste in eine Zeichenfolge ändern? oder wie ändere ich die readLine, um int zu lesen? –

+0

Von stdin können Sie nur Strings lesen. Sie müssen also immer die Zeichenfolge in int konvertieren. – C1sc0

Antwort

0

Der Fehler wird, weil „Fertig“, kann nicht analysiert werden Integer. Sie haben auch einige semantische Fehler. Hier ist der korrigierte Code:

 Console.Clear(); 
     List<int> myCars = new List<int>(); 

     Console.WriteLine("Enter the car into the lot"); 
     string input = Console.ReadLine(); 
     int IntValue; 
     if (int.TryParse(input, out IntValue)) 
     { 
      myCars.Add(IntValue); 
     } 

     while (input != "Done") //The != is not equal to 
     { 
      Console.WriteLine("Please enter another integer: "); 
      input = Console.ReadLine(); 

      if (int.TryParse(input, out IntValue)) 
      { 
       myCars.Add(IntValue); 
      } 

     } 

     int sum = 0; 
     foreach (int value in myCars) 
     { 
      sum += value; 
     } 
     Console.WriteLine("The total of all the cars on the lot are : " + " " + sum.ToString()); 
     Console.ReadLine(); 
Verwandte Themen