Как повторить оператор "if", когда вывод false
Я работаю над простой игрой, в которой пользователь должен угадать случайное число. У меня есть весь код, за исключением того факта, что если догадка слишком высока или слишком низка, я не знаю, как позволить им снова ввести номер и продолжать играть, пока они его не получат. Он просто останавливается, вот код:
import java.util.Scanner;
import java.util.Random;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Random rand = new Random();
int random = rand.nextInt(10) + 1;
System.out.print("Pick a number 1-10: ");
int number = input.nextInt();
if (number == random) {
System.out.println("Good!");
} else if (number > random) {
System.out.println("Too Big");
} else if (number < random) {
System.out.println("Too Small");
}
}
}
7 ответов
для того, чтобы повторить все, что вам нужно петлю.
общий способ повторения до тех пор, пока условие в середине тела цикла не будет выполнено, это построение бесконечный цикл, и добавление способа вырваться из него.
идиоматический способ создания бесконечного цикла в Java-это while(true)
:
while (true) {
System.out.print("Pick a number 1-10: ");
int number = input.nextInt();
if (number == random) {
System.out.println("Good!");
break; // This ends the loop
} else if (number > random) {
System.out.println("Too Big");
} else if (number < random) {
System.out.println("Too Small");
}
}
этот цикл будет продолжать свои итерации, пока путь кода не достигнет break
заявление.
вам нужно использовать цикл для этого. Код должен работать следующим образом:
import java.util.Scanner;
import java.util.Random;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Random rand = new Random();
int random = rand.nextInt(10) + 1;
System.out.print("Pick a number 1-10: ");
int number = input.nextInt();
boolean found = false;
while (!found) {
if (number == random) {
System.out.println("Good!");
found = true;
} else if (number > random) {
System.out.println("Too Big, try again:");
number = input.nextInt();
} else if (number < random) {
System.out.println("Too Small, try again:");
number = input.nextInt();
}
}
}
}
можно использовать do...while
.
Random rand = new Random();
int random = rand.nextInt(10) + 1;
do {
Scanner input = new Scanner(System.in);
System.out.print("Pick a number 1-10: ");
int number = input.nextInt();
if (number == random) {
System.out.println("Good!");
} else if (number > random) {
System.out.println("Too Big");
} else if (number < random) {
System.out.println("Too Small");
}
} while ( number != random );
Существует несколько методов для цикла вашего запроса, среди них:
while (<condition>) { <do something> }
do { <something> } while (<condition>);
for (<init statement>, <condition>, <update statement>) { <do something> }
чтобы показать, вы можете избежать использования одной из вышеупомянутых явных конструкций цикла с помощью рекурсии:
mport java.util.Scanner;
import java.util.Random;
public class Test {
public static void ask(int random) {
Scanner input = new Scanner(System.in);
System.out.print("Pick a number 1-10: ");
int number = input.nextInt();
if (number == random) {
System.out.println("Good!");
} else if (number > random) {
System.out.println("Too Big");
ask(random);
} else if (number < random) {
System.out.println("Too Small");
ask(random);
}
}
public static void main(String[] args) {
Random rand = new Random();
int random = rand.nextInt(10) + 1;
ask(random);
}
}
на ask()
метод продолжает вызывать себя, пока не будет достигнуто конечное условие (пользователь угадал правильно).
в зависимости от умность виртуальной машины Java, это может подчеркнуть стек вызовов, или нет.
заключите операторы if в цикл do-while, который будет петлять, пока пользователь не угадал число:
int number;
do {
System.out.print("Pick a number 1-10: ");
number = input.nextInt();
if (number == random) {
System.out.println("Good!");
} else if (number > random) {
System.out.println("Too Big");
} else if (number < random) {
System.out.println("Too Small");
}
} while (number != random);
чтобы условно повторить код, используйте цикл.
// this code will execute only once
System.out.print("Pick a number 1-10: ");
// initialize number to a value that would not be used and not equal random
int number = -1;
// the code inside the curly braces will repeat until number == random
while (number != random) {
// get next number
number = input.nextInt();
// handle case one
if(number > random) System.out.println("Too Big");
// handle case two
if(number < random) System.out.println("Too Small");
}
// once number == random, the condition is false so we break out of the loop
System.out.println("Good!");
то, что вы ищете, - это конструкции на языке программирования, которые позволяют вам делать определенную вещь снова и снова.
Это делается с помощью петли. Проверьте документы для цикла while например. Вот что тебе нужно.