如何修复Java猜谜游戏中的不一致性

如何修复Java猜谜游戏中的不一致性,java,Java,我又来了。我已经听了前面所有的建议,但因为我的课程没有教我如何使用这些方法,所以我对使用这些方法持谨慎态度。该程序应提示用户输入一个数字和最大猜测次数,生成一个随机数,让用户用尽所有猜测或猜测正确的数字,然后询问用户是否希望再次播放。我注意到三个错误,如果您能帮助确定他们的解决方案,我将非常感激: 如果我在猜测中输入两次负数不会产生任何结果(我假设出现运行时错误),那么如果我在猜测中输入两次0也会产生同样的结果 在第二轮游戏后,它不会询问用户是否愿意再次玩 当识别最大猜测次数大于可能的总数时,它

我又来了。我已经听了前面所有的建议,但因为我的课程没有教我如何使用这些方法,所以我对使用这些方法持谨慎态度。该程序应提示用户输入一个数字和最大猜测次数,生成一个随机数,让用户用尽所有猜测或猜测正确的数字,然后询问用户是否希望再次播放。我注意到三个错误,如果您能帮助确定他们的解决方案,我将非常感激:

  • 如果我在猜测中输入两次负数不会产生任何结果(我假设出现运行时错误),那么如果我在猜测中输入两次0也会产生同样的结果
  • 在第二轮游戏后,它不会询问用户是否愿意再次玩
  • 当识别最大猜测次数大于可能的总数时,它是不一致的。i、 e.如果我输入1表示猜测,输入1表示上限,这不应该显示我应该“挑战”自己的消息,因为0和1是正在生成的两个可能的数字,大于1,因为2仍然显示
  • 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)