我是java的新手,最近决定开始一个新项目来帮助自己学习。我的项目是一个不可能的测验。我开始在测验中提出第一个问题然后遇到了问题。我有一个while循环,如果玩家没有生命但是它不能正常工作,它应该会退出问题。 while循环看起来像:
//
//LEVEL ONE
//
while (lives != 0 || !correct == true) {
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
}
System.out.println(" ");
System.err.print("Level: ");
System.out.print(currentlevel);
System.out.println(" ");
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
}
System.err.print("Lives: ");
System.out.println(lives);
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
}
System.err.print("Skips: ");
System.out.println(skips);
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
}
System.out.println(" ");
System.out.println("Question: If there are 6 apples in a tree and you take 4, how many do you have?");
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
}
System.out.println("A: 3");
System.out.println("B: 4");
System.out.println("C: 2");
System.out.println("D: 6");
while (!choice.equalsIgnoreCase("b")) {
Scanner questionone = new Scanner(System.in);
choice = questionone.nextLine();
switch (choice) {
case "a":
System.out.println("WRONG! Try again.");
lives = lives - 1;
break;
case "b":
System.out.println("CORRECT! You have the 4 you took obviously.");
correct = true;
break;
case "c":
System.out.println("WRONG! Try again.");
lives = lives - 1;
break;
case "d":
System.out.println("WRONG! Try again.");
lives = lives - 1;
System.out.println(lives);
break;
default:
System.out.println("Please type an answer.");
break;
}
}
}
System.out.println("test");
//
//LEVEL TWO
//
PS。是的,我花了很多时间试图自己解决这个问题,并且看看是否还有其他人遇到过同样的问题。
答案 0 :(得分:1)
更改|| for&& ...
while (lives != 0 || !correct == true)
while (lives != 0 && !correct == true)
答案 1 :(得分:0)
我认为你的问题在这里:
while (lives != 0 || !correct == true) {
当你的正确=真实或你的生命= 0
时,你停止了这也意味着:当你的正确=假和你的生命时,你继续你的生活!= 0。
所以改变你的状况
while (lives != 0 && !correct == true) {
而且,while的条件:
while (!choice.equalsIgnoreCase("b")) {
你看,当你从键盘输入“b”时,你的while循环(内部循环)才会停止。因此,当你按下a(你失去1个现场)和a a a a ..等等时,你的生命将是负数。
所以改为:
while (!choice.equalsIgnoreCase("b") && lives != 0) {
检查您是否有生活。
祝你好运!答案 2 :(得分:-1)
!correct == true
这是一种奇怪的语法 - !正确意味着正确的计算结果为false,但是你说如果它是假的那么它是真的 - 基本上只是摆脱== true。也改变||到&&祝你好运!