猜测循环卡住了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,它似乎并没有打破循环。提前谢谢
# 1 楼答案
您需要更改while循环的逻辑:
while (looper == 1 && lives != 0)
现在,如果你有更多的生命,它会继续循环,不管是什么循环器
# 2 楼答案
您想要布尔AND
&&
,而不是OR||
,如下所示:如果其中一个参数为真,那么
||
的计算结果为true
,因此,如果looper
为1
,不管lives
是什么,您所拥有的将继续进行。同样,如果lives
不是0
,即使将looper
设置为2
,代码也会继续循环&&
仅当两个条件都为真时,才会计算为true
,如果looper
不是1
或lives
是0
,则会给出false
并退出循环