有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

猜测循环卡住了Java

我正在为一项任务制作一个程序,我必须让用户猜出锁的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,或者当lifes不等于0时。但如果生命下降到0,它似乎并没有打破循环。提前谢谢


共 (2) 个答案

  1. # 1 楼答案

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

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

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

  2. # 2 楼答案

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

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

    如果其中一个参数为真,那么||的计算结果为true,因此,如果looper1,不管lives是什么,您所拥有的将继续进行。同样,如果lives不是0,即使将looper设置为2,代码也会继续循环

    &&仅当两个条件都为真时,才会计算为true,如果looper不是1lives0,则会给出false并退出循环