如何在if / else语句中检查整数且小于或等于100

问题描述 投票:0回答:2

我在条件中有一个带有扫描器的if / else语句,以及检查输入为100或更少的&&语句。它是这样的:

Scanner input = new Scanner(System.in);

if(input.hasNextInt() && avgBefore <= 100) {
    avgBefore = input.nextInt();                
}

但如果我把一个数字超过100,它仍然接受它。有帮助吗?

java if-statement java.util.scanner
2个回答
5
投票

您在为其分配新值之前检查该值。您需要从nextInt()中分配值,然后检查它是否在范围内。例如:

if (input.hasNextInt()) {
    int candidate = input.nextInt();
    if (candidate <= 100) {
        avgBefore = candidate;
    } else {
        // Whatever you want to do on invalid input
    }
}

这是假设你想避免为avgBefore分配无效值。如果这不是问题,您可以使用:

if (input.hasNextInt()) {
    avgBefore = input.nextInt();
    if (avgBefore > 100) {
        // Whatever you want to do on invalid input
    }
}

0
投票

如前所述,您必须分配值,然后检查是否<= 100.一个不太可读但单线解决方案可以是:

if(input.hasNextInt() && (avgBefore = input.nextInt()) <= 100) { // assign the value and immediately test if is <= 100
    // whatever you want to do with `avgBefore`
}
© www.soinside.com 2019 - 2024. All rights reserved.