簡體   English   中英

java While循環語句將繼續循環,但不會包含我的退出循環的語句

[英]java While-loop statement will continue to loop but won't include my statement to exit the loop

該程序本身可以工作,但是我在循環中掙扎。 我是一個使用循環的初學者,我一直在尋找適用於我的程序類型的示例,但可惜沒有找到任何示例。

我知道循環會停止,如果體內某些東西可以使條件為“ false”,但是對於該程序,當它詢問是否要再次播放時,將決定該程序。 但是,我的程序沒有詢問用戶是否要繼續。 而且,如果用戶決定停止播放,則程序應說“謝謝您的游戲!”,而是不斷循環播放整個身體。

謝謝您的幫助!

這是我的循環:

// Start loop
while (looping == true) {

    // Ask if the # > 5
    System.out.println("Is your number greater than 5? (True = 1, False = 0)");
    // Read in the number
    numberOne = input.nextDouble();

    if (numberOne == 1) { // Is the # > 7?
        System.out.println("Is your number greater than 7? (True = 1, False = 0)");
        numberOne = input.nextDouble();

        if (numberOne == 1) { // Does the # = 8?
            System.out.println("Is your number 8? (True = 1, False = 0)");
            numberOne = input.nextDouble();

            if (numberOne == 0) { // If # != 8, then # = 9
                System.out.println("Your number is 9!");
            } else {
                // If answer was 8, then yay
                System.out.println("Yay! Got it!");
            }
        } else if (numberOne == 0) { // If # !> 7, then # = 6?
            System.out.println("Is your number 6? (True = 1, False = 0)");
            numberOne = input.nextDouble();

            if (numberOne == 0) { // If # != 6, then # = 7
                System.out.println("Your number is 7!");
            } else {
                //If answer was 6, then yay
                System.out.println("Yay! Got it!");
            }
        }

    } else if (numberOne == 0) { // If the # !> 5, then # > 3?
        System.out.println("Is your number greater than 3? (True = 1, False = 0)");
        numberOne = input.nextDouble();

        if (numberOne == 1) { // If true, does your number = 4?
            System.out.println("Is your number 4? (True = 1, False = 0)");
            numberOne = input.nextDouble();

            if (numberOne == 0) { // If # != 4, then # = 5
                System.out.println("Your number is 5!");
            } else {
                // If answer was 4, then yay
                System.out.println("Yay! Got it!");
            }
        } else if (numberOne == 0) { // If false, # = 2?
            System.out.println("Is your number 2? (True = 1, False = 0)");
            numberOne = input.nextDouble();

            if (numberOne == 0) { // If # != 2, then # = 3
                System.out.println("Your number is 3!");
            } else {
                // If answer is 2, then yay
                System.out.println("Yay! Got it!");
            }

            // Ask user if they want to play again
            System.out.println("Would you like to play again? (Yes = 1, No = 0)");
            numberOne = input.nextDouble();

            System.out.println("Thanks for playing!");
        }
    }
} // end loop
// Close input
input.close();
} // end method
} // end class

因為您沒有更改looping變量值。 然后將下面的代碼移到else if()塊之外。

...
System.out.println("Would you like to play again? (Yes = 1, No = 0)");
looping = input.nextBoolean();

if (looping == false) {
    System.out.println("Thanks for playing!");
}
...

您的代碼將如下所示

// Start loop
while (looping == true) {

    // Ask if the # > 5
    System.out.println("Is your number greater than 5? (True = 1, False = 0)");
    // Read in the number
    numberOne = input.nextDouble();

    if (numberOne == 1) { // Is the # > 7?
        System.out.println("Is your number greater than 7? (True = 1, False = 0)");
        numberOne = input.nextDouble();

        if (numberOne == 1) { // Does the # = 8?
            System.out.println("Is your number 8? (True = 1, False = 0)");
            numberOne = input.nextDouble();

            if (numberOne == 0) { // If # != 8, then # = 9
                System.out.println("Your number is 9!");
            } else {
                // If answer was 8, then yay
                System.out.println("Yay! Got it!");
            }
        } else if (numberOne == 0) { // If # !> 7, then # = 6?
            System.out.println("Is your number 6? (True = 1, False = 0)");
            numberOne = input.nextDouble();

            if (numberOne == 0) { // If # != 6, then # = 7
                System.out.println("Your number is 7!");
            } else {
                //If answer was 6, then yay
                System.out.println("Yay! Got it!");
            }
        }

    } else if (numberOne == 0) { // If the # !> 5, then # > 3?
        System.out.println("Is your number greater than 3? (True = 1, False = 0)");
        numberOne = input.nextDouble();

        if (numberOne == 1) { // If true, does your number = 4?
            System.out.println("Is your number 4? (True = 1, False = 0)");
            numberOne = input.nextDouble();

            if (numberOne == 0) { // If # != 4, then # = 5
                System.out.println("Your number is 5!");
            } else {
                // If answer was 4, then yay
                System.out.println("Yay! Got it!");
            }
        } else if (numberOne == 0) { // If false, # = 2?
            System.out.println("Is your number 2? (True = 1, False = 0)");
            numberOne = input.nextDouble();

            if (numberOne == 0) { // If # != 2, then # = 3
                System.out.println("Your number is 3!");
            } else {
                // If answer is 2, then yay
                System.out.println("Yay! Got it!");
            }
        }
    }

    // Ask user if they want to play again
    System.out.println("Would you like to play again? (Yes = 1, No = 0)");
    looping = input.nextBoolean();

    if (looping == false) {
        System.out.println("Thanks for playing!");
    }
}
// Close input
input.close();
}
}
// for(intialise ; testing Condition; increment/decrement)
        for (int i = 0; i < 5; i++) {

        }

        // while(condition)
        // first the condition get evaluated, if true the loop body is executed
        int i = 0;
        while (i < 5) {
            // logic goes in here
            i++;
        }

        // do{
        // your code goes in here
        // }while(condition);
        // the loop gets executed once, then the condition is evaluated, if true
        // loop is executed again
        i = 0;
        do {

        } while (i < 5);

您可以在情況下使用while或do while循環。

looping = true;
        while (looping) {
            // your code

            // Ask user if they want to play again
            System.out.println("Would you like to play again? (Yes = 1, No = 0)");
            numberOne = input.nextInt();
            //You can use a simple if else statement also
            if(numberOne == 1){
                looping = true;
            }
            else{
                lopping = false;
            }
        }

        // if you wish to use a do while loop:
        do {
            // your code

            numberOne = input.nextInt();
            // ternary operator
            looping = (numberOne == 1) ? true : false;

        } while (looping);

三元操作者:
是一個非常有用的運算符,我們有時可以使用它在一行中壓縮if-else塊。
以找到兩個數字最大的情況為例。

 if(a > b){
            max = a;
       }else{
             max = b;
       }

使用三元運算符,可以簡化並壓縮為一行:

max = (a>b)?a:b;

通用語法是

(cond)?(value to return when cond true):(value to return if cond false);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM