如何修复Java猜谜游戏中的不一致性
我又来了。我已经听了前面所有的建议,但因为我的课程没有教我如何使用这些方法,所以我对使用这些方法持谨慎态度。该程序应提示用户输入一个数字和最大猜测次数,生成一个随机数,让用户用尽所有猜测或猜测正确的数字,然后询问用户是否希望再次播放。我注意到三个错误,如果您能帮助确定他们的解决方案,我将非常感激:如何修复Java猜谜游戏中的不一致性,java,Java,我又来了。我已经听了前面所有的建议,但因为我的课程没有教我如何使用这些方法,所以我对使用这些方法持谨慎态度。该程序应提示用户输入一个数字和最大猜测次数,生成一个随机数,让用户用尽所有猜测或猜测正确的数字,然后询问用户是否希望再次播放。我注意到三个错误,如果您能帮助确定他们的解决方案,我将非常感激: 如果我在猜测中输入两次负数不会产生任何结果(我假设出现运行时错误),那么如果我在猜测中输入两次0也会产生同样的结果 在第二轮游戏后,它不会询问用户是否愿意再次玩 当识别最大猜测次数大于可能的总数时,它
import java.util.Scanner;
导入java.util.Random;
公共类MyClass{
公共静态void main(字符串参数[]){
扫描仪输入=新扫描仪(System.in);
System.out.println(“你好!这里是这个游戏的规则:”);
System.out.println(“1.您选择密码的限制!”);
System.out.println(“2.I生成密码!”);
System.out.println(“3.选择最大猜测次数!”);
系统输出
.println(“4.您尝试在您输入的猜测次数内猜测我生成的密码!”);
System.out.println(“5.您可能会获奖!”);
System.out.println(
“既然如此,你想玩吗?如果是,请输入true,如果不是,请输入false。”);
布尔WANTOPLAY=input.nextBoolean();
while(想玩!=真){
System.out.println(“谢谢你,记得洗手!你可以关上我。”);
System.out.println(
“您是否意外按了false?如果是,请输入true,如果不是,您可以退出程序。”);
WantPlay=input.nextBoolean();
}
System.out.println(
“请输入密码的限制。请注意它必须是大于0的正整数。”);
System.out.println(“请注意,您的密码将介于零和您刚才输入的数字之间。”);
int upperBound=input.nextInt();
System.out.println(“您输入的上限为“+”+上限+”)
+“正确吗?如果是,请输入true,如果不是,请输入false。”);
布尔值yesOrNo=input.nextBoolean();
如果(upperBound方法和函数是您的朋友。我强烈建议您开始学习它们。它们将减少您编写的代码量,并使其更易于阅读。duckduckgo.com快速搜索“java方法”将带您进入TutorialPoint和W3Schools页面
我建议您在IDE上使用(或学习)调试器(例如Netbeans、Eclipse)。您会发现它使故障查找变得容易数百倍
处理用户输入的第一条规则:不允许用户输入
处理用户输入的其他一般规则:用户不阅读指令,用户将执行与您的指令相反的操作,用户将尝试对您的程序执行您从未想过的操作,尽可能限制所有用户输入,每次验证每个用户输入
这些是解决您的错误的可能方法
错误1.用户输入验证将解决此问题-不需要负数
错误2.将游戏代码放入游戏while循环while(continueGame)
将解决此问题。您可以从布尔continueGame=true开始。在游戏结束时,您会问问题“您想再次玩吗?”yes=true,no=false。循环是否会再次运行取决于答案
错误3.将if(numberOfGuesses>=++secretNumber)
更改为if(numberOfGuesses>secretNumber)