【发布时间】:2020-07-27 19:51:02
【问题描述】:
我做了一个“猜随机数”的小游戏,它接受用户的输入并检查它是否等于使用 for 循环生成的数字。如果是,应用程序会打印一条祝贺语句,然后跳出循环。如果没有(并且失败了五次),应用程序应该打印出一个游戏过度类型声明。
由于某种原因,我的游戏结束语句不打印,即使所有其他 println() 语句都打印。为什么它不起作用?
下面是我的代码:
import java.util.Random;
import java.util.Scanner;
public class randgame_draft {
public static void main(String[] args) {
System.out.println("Welcome to RandGame. What's your name?");
Scanner scanner = new Scanner(System.in);
String answer = scanner.next();
System.out.println("Hello, " + answer + ". Shall we begin?");
Scanner ask = new Scanner(System.in);
String response = ask.next();
if (response.equals("yes")) {
System.out.println("Alright!");
} else {
System.out.println("Oh, okay. Later!");
return;
}
Random random = new Random();
int rand = random.nextInt(20) + 1;
for (int i = 0; i < 5; i++) {
System.out.println(answer + ", please provide a random number between 1 and 20.");
Scanner begin = new Scanner(System.in);
int end = begin.nextInt();
System.out.println("you chose " + end);
if (end != rand && end > rand) {
System.out.println("Hint: guess lower");
} else if (end != rand && end < rand) {
System.out.println("Hint: guess higher");
} else if (end == rand) {
System.out.println("congratulations, you are correct!");
System.out.println("answer was " + rand);
System.out.println("thanks for playing, " + answer + "!");
return;
} else {
System.out.println("Sorry " + answer + ". the answer was " + rand + ". Game Over.");
}
}
}
}
【问题讨论】:
-
可能不是整个问题(甚至可能根本不是问题的一部分),但不要在循环中创建新的
Scanner。制作一个,重复使用。 -
这意味着条件永远不会被击中。尝试通过调试器或打印值并检查您的假设进行调试。
-
我注意到
end != rand && end < rand与end < rand相同。这同样适用于end > rand。
标签: java for-loop random println