2016-09-30 61 views
-1

由於某些原因,當我編寫「重試」時,它只是再次提示我是否要重試或不重試。我該如何解決這個問題?我的代碼循環了代碼的錯誤部分

下面是代碼:

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

您可以使用其中一些[調試技術](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)來解決此問題。 –

回答

3

你需要的 「=」 你的while循環中一個 「==」 代替。您每次都將bool2設置爲true,而不是檢查其值。

+0

當我這樣做,如果我寫「重試」它正確循環,但然後再次翻轉硬幣後,它立即要求「你想翻轉多少硬幣?」而不是要求「退出還是重試?」 – Sopen

+0

當您退出最後一個循環時,它會回到外部循環。 –

+0

@BerkleyLamb我怎麼阻止它這樣做? – Sopen

1

你寫錯了while循環的條件。 =是轉讓,==是比較。你應該寫==而不是=,否則你每次都給bool分配true。

此外,反轉語法是一種很好的做法,即將常數置於左側:true == bool以防止出現此類拼寫錯誤,因爲如果您輸錯true = bool,編譯器將生成錯誤。

+0

你可以請建議編輯讓它正常運行?我試圖重新做我的循環,但我仍然遇到問題 – Sopen

1

如果您的意圖是獲得選項「退出或重試?」而不是「你想翻轉多少硬幣?」你應該把它們寫在單獨的循環中。你得到「你想翻轉多少硬幣」的原因?重試之後是因爲您在重試循環中設置了bool2 = false。用你現有的邏輯「退出還是重試?」在重試之後永遠不會達到,因爲bool2在while循環中未設置爲true。

+0

當我從重試循環中刪除它,它不斷循環「退出或重試」,你可以請建議正確的更改 – Sopen

+0

保留你的邏輯和設置bool2爲false在「退出「循環而不是」重試「循環。 – Meg