2016-05-17 15 views
-1

Ich versuche, eine Schleife für mein Taschenrechner-Programm zu stoppen, aber ich darf nicht Pausen oder system.exit verwenden. Wie würde ich so mit dem Anhalten meiner Schleife gehen, indem ich nur 5 für das Menü einstelle? Wie kann ich das Programm beenden, wenn ich "n" für die Frage eingeben würde, würde ich gerne den Rechner wieder benutzen? P.S. Ich benutze Java.Wie mache ich meine Schleife stoppen

public static void main (String args []) { 
    String MainMenu = " Calculator Options \n\n1. Addition\n2" + 
      " Subtraction\n3. Multiplication\n4. Division\n5. Exit"; 
    menu (MainMenu); 

    while (true) { 
     String YesorNo = JOptionPane.showInputDialog("Would You Like to Use the Calculator Again (y/n)? "); 

     if (YesorNo.equals ("y")) { 
      menu (MainMenu); 
     } 

     if (YesorNo.equals ("n")) { 

     } 
    } 
} 

public static int menu (String info) { 
    String choice = JOptionPane.showInputDialog (info); 
    if (choice.equals ("1")) 
     return Addition(); 
    else if (choice.equals ("2")) 
     return Subtraction(); 
    else if (choice.equals ("3")) 
     return Multiplication(); 
    else if (choice.equals ("4")) 
     return Division(); 
    else 
     return 0; 
} 
+0

Verwenden Sie eine 'do..while'-Schleife, die prüft, ob' YesorNo.equals ("y") ' – SomeJavaGuy

+0

Warum dürfen Sie keine Pausen verwenden? – Lee

+0

@Lee mein Lehrer sagt, es verletzt Code, weil es zwei Möglichkeiten gibt – FB10

Antwort

2

Verwenden Sie das Schlüsselwort break.

if (YesorNo.equals ("n")) { 
    break; 
} 

Oder legen Sie den Zustand in der while-loop und verwenden Sie das Schlüsselwort do.

do { 
    // code & blaaa .. blaaa & code 
} while (YesorNo.equals("y")); 
+2

"* aber ich darf nicht Pausen verwenden *" – Guy

+0

Okey, bearbeitet :) –

+0

Warum der Downvote? Alles, was ich verbessern kann oder was ich verpasst habe? –

2

Um Sie beide Fragen zu beantworten:

Sie müssen einfach nur da beide Bedingungen eine do-while Schleife und umfassen verwenden. Aber mit Ihrer aktuellen Implementierung wird das nicht zu 100% funktionieren.

Grund ist, dass Sie die Aktion sowie das Ergebnis von menu zurückgeben.

Zum Anfang, so könnte Ihre Schleife aussehen.

do { 
    String YesorNo = JOptionPane.showInputDialog ("Would You Like to Use the Calculator Again (y/n)? "); 
    int menuReturn = menu (MainMenu); 
} while (YesorNo.equals("y") || menuReturn != 0); 

Das ist, was funktionieren könnte, die menu Methode funktioniert 0 zurück, wenn es nicht innerhalb der Werte 0-4 ist. Aber was passiert, wenn das Ergebnis einer Ihrer mathematischen Operationen 0 ist? Sie würden auch den Rechner schließen. An dieser Stelle möchten Sie möglicherweise ändern, was menu tut.

private static int result = 0; 

public static int menu (String info) { 
    String choice = JOptionPane.showInputDialog (info); 
    if (choice.equals ("1")) { 
     result = Addition(); 
     return 1; 
    } 
    else if (choice.equals ("2")) { 
     result = Subtraction(); 
     return 1; 
    } 
    else if (choice.equals ("3")) { 
     result = Multiplication(); 
     return 1; 
    } 
    else if (choice.equals ("4")) { 
     result = Division(); 
     return 1; 
    } 
    else if (choice.equals("5")) 
     return -1; 
    else 
     return 0; 

Ihr Loop-Design würde jetzt zu etwas wie dem folgenden ändern.

do { 
    String YesorNo = JOptionPane.showInputDialog ("Would You Like to Use the Calculator Again (y/n)? "); 
    int menuReturn = menu (MainMenu); 
    // Work with the result now 
    if (menuReturn == 0) // invalid input; 
} while (YesorNo.equals("y") || menuReturn != -1); 

Aber um ein wenig mehr Code, um es vollständig zusammenziehen Sie das OOP Prinzip zu machen dann in der Antwort gezeigt haben könnten neu zu schreiben.

Verwandte Themen