我在条件中有一个带扫描仪的if / else语句,以及&&和语句检查输入是否为100或更少。它是这样的:
Scanner input = new Scanner(System.in);
if(input.hasNextInt() && avgBefore <= 100) {
avgBefore = input.nextInt();
}
但如果我把一个数字超过100,它仍然接受它。有什么帮助吗?
答案 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`
}