2016-09-30 81 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