【问题标题】:Guessing Loop Stuck Java猜测循环卡住 Java
【发布时间】:2013-04-02 22:58:52
【问题描述】:

我正在为一个作业编写程序,我必须让用户猜测一个锁的 3 个数字来解锁它。如果他们不能在 3 内完成,则游戏结束。很简单,据我所知,我做对了,所以不知道我哪里错了。这是一段代码:

do{
    try{
        String g1Str = JOptionPane.showInputDialog("Enter number 1:");
        g1 = Integer.parseInt(g1Str);
        looper = 2;
    }
    catch(NumberFormatException e){
        JOptionPane.showMessageDialog(null,"Not a Number");
        looper = 1;
    }
    if(g1!=num1){
        JOptionPane.showMessageDialog(null, "Incorrect guess, try again");
        lives = lives - 1;
        looper = 1;
    }
    else if(g1==num1){
        JOptionPane.showMessageDialog(null, "Correct!");
        looper = 2;
    }
}while(looper==1||lives!=0);

这是我的想法:要求用户输入数字,尝试将字符串转换为整数。我使用 try catch 来确保用户确实输入了数字而不是字母。之后,我看看猜测是否等于实数。如果没有,你会失去一个生命(生命之前被声明为 3),然后将 looper 设置为 1,这样你就可以再次尝试猜测你是否有足够的生命。如果它是正确的,则looper被设置为2,并且循环被打破,此时用户可以猜测第二个数字。只要你有足够的生命,我只希望循环保持活动状态,所以我将“while”语句设置为当 looper 为 1 时,或者当生命不等于 0 时。但它似乎不会打破循环如果生命值降为 0。提前致谢

【问题讨论】:

    标签: java loops


    【解决方案1】:

    您需要更改 while 循环的逻辑:

    while (looper == 1 && lives != 0)

    现在,如果你有更多生命,它会继续循环,不管 Looper 是什么。

    【讨论】:

    • @DoanCuong 为什么它是一个更好的解决方案?
    • 对不起,我的错,我没有通过它
    • 好的,我现在知道出了什么问题,我假设 OR 意味着如果其中任何一个错误,它就会中断。现在已修复,我在其他循环的开头添加了if(lives==0){ looper=2}。谢谢
    【解决方案2】:

    您需要布尔 AND && 而不是 OR ||,如下所示:

    while(looper==1 && lives!=0);
    

    || 如果其中一个参数为真,则计算结果为 true,因此,如果 looper1,则无论 lives 是什么,您所拥有的都将继续下去。同样,如果lives 不是0,您的代码将继续循环,即使您将looper 设置为2

    && 将仅在两个条件都为真时评估为 true,如果 looper 不是 1lives 不是 0,则将给出 false 并退出循环。

    【讨论】:

      【解决方案3】:

      替换这个

      if(g1!=num1){
            JOptionPane.showMessageDialog(null, "Incorrect guess, try again");
            lives = lives - 1;
            looper = 1;
         }
      

      由此

      if(g1!=num1){
         JOptionPane.showMessageDialog(null, "Incorrect guess, try again");
         lives = lives - 1;
         if(lives == 0)
         {
             looper = 2;
         }
         else
         {
             looper = 1;
         }
      
      }
      

      因为当你的lives 达到 0.looper 仍然等于 1 所以循环继续

      【讨论】:

        猜你喜欢
        • 2020-03-01
        • 2012-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-16
        • 2014-08-24
        • 1970-01-01
        相关资源
        最近更新 更多