#java
#java
Вопрос:
По какой-то причине, когда я пишу «повторить попытку», он просто снова запрашивает меня, хочу ли я повторить попытку или нет. Как я могу решить эту проблему?
Вот этот код:
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;
}
}
}
}
}
Комментарии:
1. Вы можете решить эту проблему, используя некоторые из этих методов отладки .
Ответ №1:
Вам нужно «==» вместо «=» в циклах while. Вы каждый раз устанавливаете bool2 в true вместо того, чтобы проверять его значение.
Комментарии:
1. Когда я это делаю, если я пишу «Повторить попытку», он зацикливается правильно, но затем, после повторного подбрасывания монет, он сразу спрашивает: «Сколько монет вы хотели бы перевернуть?» вместо того, чтобы спрашивать «Выйти или повторить попытку?»
2. Он вернулся во внешний цикл, когда вы вышли из последнего цикла.
3. @BerkleyLamb Как мне помешать этому?
4. Я думаю, это зависит от того, что вы собираетесь делать? Вы хотите спросить, сколько монет только один раз? затем извлеките эту часть из самого внешнего цикла. вам может понадобиться другой уровень, если вы просто хотите повторно бросить то же количество монет
5. @BerkleyLamb Я бы хотел, чтобы это было зациклено, но только если они снова выберут повторить попытку, а не сразу после того, как он перевернет монеты
Ответ №2:
Вы неправильно написали условия циклов while. =
это присваивание, ==
это сравнение. Вы должны написать ==
вместо =
, иначе вы каждый раз присваиваете true bool .
Кроме того, рекомендуется изменить синтаксис, т.е. Поместить константу слева: true == bool
чтобы предотвратить такие опечатки, поскольку компилятор сгенерирует ошибку, если вы неправильно true = bool
введете .
Комментарии:
1. не могли бы вы предложить изменения, чтобы заставить его работать должным образом? Я пытался повторить свои циклы, но у меня все еще возникают проблемы
Ответ №3:
Если вы намерены получить опцию «Выйти или повторить попытку?» вместо «Сколько монет вы хотели бы перевернуть?» вы должны писать их в отдельных циклах. Причина, по которой вы получаете «Сколько монет вы хотели бы перевернуть?» после повторной попытки, заключается в том, что вы установили bool2=false в цикле повторных попыток. С вашей существующей логикой «Выйти или повторить попытку?» никогда не будет достигнут после повторной попытки, поскольку для bool2 не задано значение true в цикле while.
Комментарии:
1. Когда я удаляю его из цикла повторных попыток, он непрерывно повторяет цикл «Выйти или повторить попытку», не могли бы вы предложить правильные изменения
2. сохраните свою логику и установите для bool2 значение false в цикле «Выйти» вместо цикла «Повторить попытку».