2016-09-30 2 views
-1

Aus irgendeinem Grund, wenn ich "retry" schreibe, fordert es mich einfach erneut auf, wenn ich es wiederholen möchte oder nicht. Wie kann ich dieses Problem lösen? HierMein Code ist die falsche Code-Sektion

ist der Code:

import java.util.Scanner; 

public class CoinFlip { 

    public static void main (String[]args)throws InterruptedException { 

    Scanner sc = new Scanner(System.in); 
    Scanner scan = new Scanner(System.in); 
    int numloop; 
    int x = 0; 
    String choice; 
    Boolean bool = true; 
    Boolean bool2 = true; 


    while (bool=true){ 
     x=0; 
     System.out.println("How Many Coins Would You Like To Flip?"); 
     numloop = sc.nextInt(); 

     if (numloop == 13 || (numloop == 5 || (numloop == 8 || (numloop == 666)))) { 
     System.out.println("ILLUMINATI CONFIRMED ??????"); 
     System.out.println(); 
     } 

     System.out.println("Flipping Coin(s)..."); 
     System.out.println(); 

     while (x<numloop) { 

     int rng = (int)(Math.random()*10+1); 

     if (rng <= 5) { 
      System.out.println("You Flipped Heads"); 
     } 

     else { 
      System.out.println("You Flipped Tails"); 
     } 

     x=x+1; 
     } 
     while (bool2=true) { 

     System.out.println(); 
     System.out.println("Would You Like To 'Quit' Or 'Retry'?"); 
     choice = scan.nextLine(); 

     if (choice.equalsIgnoreCase("Quit")) { 
      System.out.println ("Have A Nice Day"); 
      System.out.println ("Quitting Interactions..."); 
      Thread.sleep(1000); 
      System.exit(0); 
     } 

     if (choice.equalsIgnoreCase("Retry")) { 
      bool=true; 
      bool2=false; 
     } 

     else { 
      System.out.println("That Was An Invalid Answer"); 
      bool=false; 
      bool2=true; 
     } 
     } 
    } 
    } 
} 
+0

Sie können dieses Problem lösen, indem Sie einige dieser [Debugging-Techniken] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) verwenden. –

Antwort

3

Sie benötigen einen "==" statt "=" in der While-Schleifen. Sie setzen Bool2 jedes Mal auf "True", anstatt dessen Wert zu überprüfen.

+0

Wenn ich das tue, wenn ich "Retry" schreibe, läuft es gut, aber nachdem ich die Münzen wieder umgedreht habe, fragt es sofort "Wie viele Münzen möchten Sie umdrehen?" anstatt zu fragen "Quit oder Retry?" – Sopen

+0

Es ging zurück in die äußere Schleife, wenn Sie die letzte Schleife verlassen. –

+0

@BerkleyLamb Wie kann ich damit aufhören? – Sopen

1

Sie haben die Bedingungen der While-Schleifen falsch geschrieben. = ist Zuordnung, == ist Vergleich. Sie sollten == anstelle von = schreiben, andernfalls werden Sie dem Bool jedes Mal treu zuweisen.

Außerdem ist es eine gute Übung, die Syntax umzukehren, d. H. Setzen Sie die Konstante auf die linke: true == bool, um solche Tippfehler zu verhindern, da der Compiler einen Fehler erzeugt, wenn Sie true = bool vertippen.

+0

können Sie bitte Änderungen vorschlagen Lass es richtig laufen? Ich habe versucht, meine Schleifen zu tun, aber ich bekomme immer noch Probleme – Sopen

1

Wenn Sie die Option "Quit or Retry?" anstelle von "Wie viele Münzen möchten Sie umdrehen?" Sie sollten sie in getrennten Schleifen schreiben. Der Grund, warum Sie bekommen "Wie viele Münzen möchten Sie umdrehen?" Nach der Wiederholung liegt das daran, dass Sie in der Wiederholungsschleife bool2 = false gesetzt haben. Mit Ihrer bestehenden Logik "Quit or Retry?" wird nach einem erneuten Versuch nie erreicht, da bool2 in der while-Schleife nicht auf true gesetzt ist.

+0

Wenn ich es aus der Wiederholungsschleife zu entfernen, es kontinuierlich Schleife "Quit oder Retry" könnten Sie bitte die richtigen Änderungen vorschlagen – Sopen

+0

behalten Sie Ihre Logik und setzen Sie Bool2 auf falsch in der "Beenden "Schleife statt Schleife" Wiederholen ". – Meg