这可能是一个明显的答案,但它明天到期,我完全被难倒了。除了最后的if语句之外,一切正常。似乎continueGame循环无限循环if语句。如果有人可以帮我解决这个问题,请。
import java.util.Random;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class HighLOw {
public static void main(String[] args) throws IOException {
String input = null;
int number = 0;
int tries = 0;
boolean highorlow = false;
boolean continueGame = false;
boolean validInput = false;
Random random = new Random();
int randomNumber = (random.nextInt(101));
System.out.println("Welcome to the High/Low game.");
System.out.println("Guess a number between 0 and 100.");
System.out.println(
"In order to print a random number, type your number in the console and press enter.");
System.out.println("Keep going until you get the right number.");
System.out.println("Have fun.");
System.out.println(randomNumber);
while (continueGame == false) {
while (validInput == false) {
try {
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(System.in)); // BufferedReader variable where the user will input their answer
input = bufferedReader.readLine();
number = Integer.parseInt(input);
validInput = true;
} catch (NumberFormatException ex) {
System.out.println("Invalid input, please enter a number.");
validInput = false;
}
if (number < 0 || number > 100) {
System.out.println(
"Error, you must enter a number that is between 0 and 100");
validInput = false;
}
}
if (number < randomNumber) {
System.out.println(
number + " is too low. Please try a higher number");
tries++;
highorlow = false;
} else if (number > randomNumber) {
System.out.println(
number + " is too high. Please try a lower number");
tries++;
highorlow = false;
} else if (number == randomNumber) {
System.out.println(
"Congratulations, you guessed the right number. Now go outside.");
tries++;
System.out.println("It took you " + tries + (" tries."));
System.out.println("Game Ended");
continueGame = true;
}
}
}
}
答案 0 :(得分:4)
一些提示:当您第一次输入有效号码时,validInput
将变为true
。然后,代码继续比较number
到randomNumber
,然后再次跳转到continueGame
循环的开头。现在validInput
的价值是什么,以及它对validInput
循环有什么影响? number
会获得新值吗?
此外,您无需执行while (validInput == false)
..只需while (!validInput)
即可。
答案 1 :(得分:0)
请记住,if/else
语句是从上到下进行评估的。一旦找到匹配的if
,就会执行它的正文并退出。
记住这一点,这意味着对if/else
结构的给定评估只有一个case
,其中正文将被执行。
查看您的if
条款并将其视为一个数字行(或者更好地绘制一个数字行,其中包含number
和randomNumber
可能的一些示例)并查看是否答案会跳出来。