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

Вам нужно "==" вместо "=" в ваше время петель. Вы устанавливаете bool2 в true каждый раз, а не проверяете его значение.

+0

Когда я это делаю, если я пишу «Повторить», он правильно петлит, а затем, снова перелистывая монеты, он сразу спрашивает «Сколько монет вы хотели бы перевернуть?» а не спрашивать «Выход или повтор?». – Sopen

+0

Он вернулся к внешнему циклу, когда вы вышли из финального цикла. –

+0

@BerkleyLamb Как я могу остановить это от этого? – Sopen

1

Вы неправильно указали условия цикла while. = - задание, == сравнение. Вы должны написать == вместо =, иначе вы назначаете true для bool каждый раз.

Кроме того, рекомендуется пересмотреть синтаксис, то есть поставить константу слева: true == bool, чтобы предотвратить такие опечатки, поскольку компилятор будет генерировать ошибку, если вы ошиблись true = bool.

+0

, можете ли вы предложить изменения для заставить его работать правильно? Я попытался выполнить мои циклы, но у меня все еще возникают проблемы – Sopen

1

Если вы намереваетесь получить опцию «Выход или повтор?» вместо «Сколько монет вы хотели бы перевернуть?» вы должны писать их в отдельных циклах. Причина, по которой вы получаете «Сколько монет вы хотели бы перевернуть?» после повтора это потому, что вы установили bool2 = false в цикл повтора. С вашей существующей логикой «Выйти или повторить?» никогда не будет достигнута после повторной попытки, так как bool2 не установлен в true в Loop.

+0

Когда я удаляю его из цикла повтора, он непрерывно зацикливается на «Quit или Retry», вы могли бы предложить правильные изменения. – Sopen

+0

сохраните свою логику и установите bool2 в false в «Quit "вместо цикла" Повторить ". – Meg

Смежные вопросы