Java不会停止循环我的if语句

时间:2012-10-03 20:20:04

标签: java loops if-statement while-loop

这可能是一个明显的答案,但它明天到期,我完全被难倒了。除了最后的if语句之外,一切正常。似乎continueGame循环无限循环if语句。如果有人可以帮我解决这个问题,请。

import java.util.Random;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class HighLOw {
    public static void main(String[] args) throws IOException {

        String input = null;
        int number = 0;
        int tries = 0;
        boolean highorlow = false;
        boolean continueGame = false;
        boolean validInput = false;
        Random random = new Random();
        int randomNumber = (random.nextInt(101));

        System.out.println("Welcome to the High/Low game.");
        System.out.println("Guess a number between 0 and 100.");
        System.out.println(
                "In order to print a random number, type your number in the console and press enter.");
        System.out.println("Keep going until you get the right number.");
        System.out.println("Have fun.");
        System.out.println(randomNumber);

        while (continueGame == false) { 

            while (validInput == false) {
                try {
                    BufferedReader bufferedReader = new BufferedReader(
                            new InputStreamReader(System.in)); // BufferedReader variable where the user will input their answer

                    input = bufferedReader.readLine();
                    number = Integer.parseInt(input);
                    validInput = true;

                } catch (NumberFormatException ex) { 
                    System.out.println("Invalid input, please enter a number.");
                    validInput = false;
                }

                if (number < 0 || number > 100) {
                    System.out.println(
                            "Error, you must enter a number that is between 0 and 100");
                    validInput = false;
                }
            }

            if (number < randomNumber) {
                System.out.println(
                        number + " is too low. Please try a higher number");
                tries++;
                highorlow = false;
            } else if (number > randomNumber) {
                System.out.println(
                        number + " is too high. Please try a lower number");
                tries++;
                highorlow = false;
            } else if (number == randomNumber) {
                System.out.println(
                        "Congratulations, you guessed the right number. Now go outside.");
                tries++;
                System.out.println("It took you " + tries + (" tries."));
                System.out.println("Game Ended");
                continueGame = true;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:4)

一些提示:当您第一次输入有效号码时,validInput将变为true。然后,代码继续比较numberrandomNumber,然后再次跳转到continueGame循环的开头。现在validInput的价值是什么,以及它对validInput循环有什么影响? number会获得新值吗?

此外,您无需执行while (validInput == false) ..只需while (!validInput)即可。

答案 1 :(得分:0)

请记住,if/else语句是从上到下进行评估的。一旦找到匹配的if,就会执行它的正文并退出。

记住这一点,这意味着对if/else结构的给定评估只有一个case,其中正文将被执行。

查看您的if条款并将其视为一个数字行(或者更好地绘制一个数字行,其中包含numberrandomNumber可能的一些示例)并查看是否答案会跳出来。