用户输入永远不会输入if语句

时间:2020-08-08 16:35:22

标签: java if-statement input integer

程序的重点是让用户不断地输入一定数量的整数(直到他们输入除整数以外的其他值),并且对于用户输入的每个整数,它应该检查整数是否大于或小于输入的值。

问题:程序运行时,一切正常,直到到达为止

number = scanner.nextInt();

在这一点上,用户输入了整数,但从未将其放入以下if语句中。我希望使用提示而不是答案,但是我会尽力而为。

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        do {
            System.out.println("Enter number: ");
            int number = 0;
            int minNumber = 0;
            int maxNumber = 0;
            boolean hasInt = scanner.hasNextInt();
            if (hasInt) {
                number = scanner.nextInt();
                if (maxNumber < number) {
                    maxNumber = number;
                }
                if (minNumber > number) {
                    minNumber = number;
                }
            } else {
                System.out.println("Your minimum number: " + number);
                System.out.println("Your maximum number: " + maxNumber);
                break;
            }
        } while (true);

        scanner.close();
    }
}

2 个答案:

答案 0 :(得分:4)

您的minNumbermaxNumber声明应该放在循环之外。另外,您需要按如下所示初始化值,以便仅与输入值进行正确的最小和最大比较:

int minNumber = Integer.MAX_VALUE;
int maxNumber = Integer.MIN_VALUE;

在打印语句中,您正在打印minNumber,而不是number

答案 1 :(得分:1)

它没有到达if语句,因为如果这样做,用户输入将更新为我认为的输入值。没有。它输出最初声明的值。

您没有得到正确的输出,并且有一个假设,原因是代码未输入if语句。按照科学方法,下一步是检验您的假设。

如果将打印输出放在if语句中,则会看到它们确实在运行。不是这个。错误必须在其他地方。您应该收集更多证据并提出新的假设。

提示:尝试在每次迭代的开始结束时打印出变量的值。我在下面标记了地方。他们是您所期望的吗?您将看到一个异常,应该将您指向正确的方向。

do {
    System.out.println("Enter number: ");
    int number = 0;
    int minNumber = 0;
    int maxNumber = 0;

    // Print number, minNumber, and maxNumber.

    boolean hasInt = scanner.hasNextInt();
    if (hasInt) {
        number = scanner.nextInt();
        if (maxNumber < number) {
            maxNumber = number;
        }
        if (minNumber > number) {
            minNumber = number;
        }
    } else {
        System.out.println("Your minimum number: " + number);
        System.out.println("Your maximum number: " + maxNumber);
        break;
    }

    // Print number, minNumber, and maxNumber.
} while (true);