编写一个程序来生成 1 – 100 之间的随机数并将其保存为 secret 数字。然后程序将检查用户是否可以猜出 secret 数字。用户可以继续猜测数字,直到找到数字为止,或者用户可以输入 0,这将终止程序。
每次用户进行猜测时,程序都会报告如下:
- 太高或太低(超过 30 折)
- 高或低(相差 10 到 30 分)
- 有点高或有点低(折扣少于 10 分)
如果 secret 数字是 74 并且用户输入 26,程序将打印“Way Too Low”。如果用户随后输入 65,则程序将打印“A Little Low
我被 if 语句困住了,也许我的结构不正确。我不确定。
import java.util.Scanner;
public class SecretNumber {
public static void main(String[] args){
int random1, answer;
Scanner input = new Scanner(System.in);
random1 = (int)(Math.random()*10);
System.out.print(random1);
System.out.println("Guess the number");
answer = input.nextInt();
while(answer != 0) {
if (answer > (random1 + 30)){
System.out.println("Way to high");
}
else if ( answer > ( random1 - 30)){
System.out.println("Way to low");
}
else if (answer > random1 + 10 && answer < random1 + 30){
System.out.println("High");
}
else if (answer > random1 - 10 && answer < random1 - 30 ){
System.out.println("Low");
}
else if ( answer > random1 + 10){
System.out.println("A little high");
}
else if ( answer < random1 - 10){
System.out.println("A little low");
}
else if ( answer == random1){
System.out.println("That is correct");
System.exit(0);
}
else {
System.out.println("Guess the number");
answer = input.nextInt();
}
}
}
}
最佳答案
将最终 else block 中获取输入的行移至 else 后面(但仍在循环内),它将正常工作。
您想要这样做的原因是因为它进入了再次猜测条件之一(例如,“太低了!”),然后永远不会进入最终的 else,从而导致无限循环。
while (answer !=0){
// ommitted
else if ( answer == random1){
System.out.println("That is correct");
System.exit(0);
}
System.out.println("Guess the number");
answer = input.nextInt();
}
关于java - 创建一个java程序猜谜游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15350022/