Java循环不结束

时间:2016-09-23 23:32:15

标签: java while-loop

我是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。是的,我花了很多时间试图自己解决这个问题,并且看看是否还有其他人遇到过同样的问题。

3 个答案:

答案 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。也改变||到&&祝你好运!