猜圈循环Java

时间:2013-04-02 14:49:39

标签: java loops

我正在为一项作业制作一个程序,我必须让用户猜出一个锁的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,这样你就可以尝试再次猜测你是否有足够的生命。如果正确,则弯针设置为2,并且循环断开,此时用户可以猜出第二个数字。我只希望循环保持活动,只要你有足够的生命,所以我将“while”语句设置为当looper为1时,或者当生命不等于0时。但它似乎没有打破循环如果生命下降到0.提前感谢

3 个答案:

答案 0 :(得分:7)

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

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

现在,如果你有更多的生命,无论什么是活跃的,它都会保持循环。

答案 1 :(得分:1)

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

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

||如果其中一个参数为真,则评估为true,因此如果looper1,则无论{{1}是的。同样,即使您将lives设置为lives,如果0不是looper,您的代码也会继续循环。

仅当两个条件都为真时,

2才会评估为&&,如果true不是false,则会looper并退出循环1lives

答案 2 :(得分:0)

替换此

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,所以循环继续