【问题标题】:Java won't stop looping my if statementsJava 不会停止循环我的 if 语句
【发布时间】:2012-09-24 20:06:26
【问题描述】:

这可能是一个显而易见的答案,但明天就要到期了,我完全被难住了。除了最后的 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;
            }
        }
    }
}

【问题讨论】:

    标签: java loops if-statement while-loop


    【解决方案1】:

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

    你也不需要while (validInput == false).. 只是while (!validInput) 是等价的..

    【讨论】:

    • 非常感谢您的帮助。它现在工作 100%。这是一个相当菜鸟的错误,但我刚开始使用 java。
    【解决方案2】:

    请记住,if/else 语句是从上到下计算的。一旦找到匹配的if,它的主体就会被执行并退出。

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

    查看您的 if 子句并将它们视为数轴(或者更好地画一个数轴,并用一些示例说明 numberrandomNumber 可能是什么),看看答案是否会突然出现.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-01
      • 1970-01-01
      • 2017-02-17
      • 1970-01-01
      相关资源
      最近更新 更多