如何在if / else语句

时间:2018-01-02 21:12:31

标签: java if-statement java.util.scanner

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

Scanner input = new Scanner(System.in);

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

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

2 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分:0)

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

if(input.hasNextInt() && (avgBefore = input.nextInt()) <= 100) { // assign the value and immediately test if is <= 100
    // whatever you want to do with `avgBefore`
}