java - 扫描输入并再次启动循环或关闭它
问题描述
我编写了一个猜谜游戏,现在我遇到了问题。我想问用户他/她是否想再次玩,如果答案是“y”(是),重新开始游戏,如果答案是“N”(否)它应该结束循环。
如果我输入“否”,为什么它不会结束?有人可以帮我处理这部分代码吗?
我尝试过不同的事情,比如在课堂之外或内部定义它等。
public class GuessingGame {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Random rdm = new Random();// Welcome to the game
System.out.println("Welcome!");
// Generate random number
int input = 0;
do {
int rdmNumber = rdm.nextInt(999) + 1;
while (input != rdmNumber) {
try {
System.out.println("Please enter your guess:");
int userGuess = Integer.parseInt(sc.next());
input = userGuess;
} catch (NumberFormatException e) {
System.out.println("Not a number - try again!");
}
if (input > rdmNumber) {
System.out.println("Too big!");
} else if (input < rdmNumber) {
System.out.println("Too small!");
} else if (input == rdmNumber) {
System.out.println("You win!");
}
}
System.out.println("Play another Round? [y/N]");
String nextRound = sc.nextLine();
sc.next();
if (nextRound.contains("y")) {
input = 0;
}
}while (input == 0);
}
}
如果用户输入“y”,游戏应该重新启动,如果他/她输入“N”,游戏应该结束。
解决方案
你只input
在nextRound.contains("y")
. 因此,对于“y”以外的任何输入,输入将保留0
(您将其初始化为的值)。while 循环继续,因为input == 0
它是真的。
正确的解决方案是将您的if
陈述更改为:
if (nextRound.contains("N")) {
input = 1;
}
或者:
if (nextRound.contains("N")) {
return;
}
推荐阅读
- python - 在 DF 中一列的所有行中添加逗号,除了 pandas python 中的最后一行
- html - 如何在具有其他标签的元素中选择某些 div
- imageresizer - 调整原始图像的大小会产生荧光绿色图像
- azure - 如何将多个 compose 对象合并到 JSON 数组?
- java - 在 Bean 构造函数中获取解组错误类型运行时异常
- spring - 在 Hibernate EntityListener 中验证限制
- html - 使用 fileupload 将 CSV 文件数据导入(上传)到 ASP.Net VB.Net 中的 SQL Server 数据库
- python - Python - 2个日期之间的列值总和
- r - 为什么for循环不按从负值到正值的顺序考虑0?
- python - 将可变长度输入序列数据转换为固定大小嵌入