2016-03-24 10 views
0

Ich machte einen Taschenrechner in C#. Hier ist der Multiplikationsteil ---Warum schließt die Konsole, nachdem ich ja eingegeben habe?

using System; 
static class calculator 
{ 
    public static void Main() 
    { 
    welcome: 
    Console.WriteLine("Welcome to my calculator, please press enter to   continue"); 
    Console.ReadLine(); 
    Console.WriteLine("Do you want to add, subtract, multiply or divide?"); 
    string x = Convert.ToString(Console.ReadLine()); 
    if (x == "multiply") 
    { 
     Console.WriteLine("Please enter the first value"); 
     decimal value1multiply = Convert.ToDecimal(Console.ReadLine()); 
     Console.WriteLine("Please enter the second value"); 
     decimal value2multiply = Convert.ToDecimal(Console.ReadLine()); 
     Console.WriteLine("Result ="); 
     Console.WriteLine(value1multiply * value2multiply); 
     Console.WriteLine("Thank you for using my calculator!Do you still want to use it?Please answer in 'yes' or 'no' and press 'enter'"); 
     Console.ReadLine(); 
     string yesorno =Console.ReadLine(); 
     if (yesorno == "yes") 
     { 
      goto welcome; 
     } 
     if (yesorno == "no") 
     { 
      Environment.Exit(0); 
     } 
    } 
     } 
     } 

Wenn ich ‚Ja‘ eingeben, wenn sie mich fragt, sollte die Konsole führen mich zu begrüßen. Aber stattdessen führt es mich nirgends hin und bleibt leer. Wenn ich erneut die Eingabetaste drücke, wird die Konsole geschlossen. Warum passiert das und wie kann ich das verhindern?

Was habe ich versucht:

Ich versuchte, die Environment.Exit (0) entfernt wird, zu denken, dass die Konsole mir zu, dass führte aber es half nicht. Ich habe sogar versucht, den Code in Visual Studio einzugeben, aber keinen Unterschied im Ergebnis. (Ich benutze scharf entwickeln)

+3

anstelle von goto - verwenden Sie während mit Bedingung. goto sollte nicht verwendet werden, es gilt als schlechte Praxis – Mafii

+0

die Zeichenfolge ist offensichtlich nicht nein und nicht ja - das ist, warum es noch geschlossen, wenn Sie environment.exit entfernen. in Betracht ziehen, den Wert von yesorno mit einem Breakpoint zu überprüfen – Mafii

+1

console.readline vor dem String entfernen yesorno = Console.ReadLine(); – rashfmnb

Antwort

7

Neben der Verwendung von goto, die oft verpönt ist, verwenden Sie einen zu viel ReadLine Anruf.

hier:

Console.ReadLine(); 
string yesorno = Console.ReadLine(); 

Vielleicht getippt Sie yes und drücken Sie dann Geben Sie zweimal. In diesem Fall wäre yesorno leer und Ihre Prüfung würde fehlschlagen. Der erste Eintrag wird von der ersten ReadLine geschluckt, die keiner Variablen zugewiesen wurde.

+0

Danke super Antwort das Problem komplett behoben. – makertech81

+0

Gern geschehen. Lernen Sie, sich mit Ihrem Debugger vertraut zu machen. Das wird dir beim nächsten Mal helfen. Legen Sie einen Haltepunkt in der Zeile fest, die Sie untersuchen möchten. Dann hättest du gesehen, dass es * nachdem * du * ja * getippt hast. –