Java扫描程序:我必须输入三次相同的值

  • 本文关键字:三次 程序 扫描 Java java
  • 更新时间 :
  • 英文 :


如果我将if中的typedNum替换为x((typedNum.nextInt() > 21 && typedNum.nextInt()< 30)),则它工作得很好。为什么会这样?

import java.util.Scanner;
public class Main {
public static int number(Scanner typedNum) {
int x = 0;
int i = 0;
while (i < 1) {
x = typedNum.nextInt();
if ((typedNum.nextInt() > 21 && typedNum.nextInt()< 30)) {
System.out.println("in range");
i=1;
} 
else {
System.out.println("Not in range");
}
}
System.out.println(x);
return (x);
}
public static void main(String[] args) {
Scanner y = new Scanner(System.in);
number(y);
}
}

调用typedNum.nextInt()的每个实例都从STDIN获得一个单独的输入。当您使用x代替函数调用时,它非常有效,因为您只需要接受一次输入,然后再使用多次。

每次调用nextInt()时,扫描仪都会读取一个新号码。如果执行nextInt() > 21 && nextInt() < 30,它将读取一个数字,并将其与21进行比较,如果它小于,它将不会计算和的后半部分。这被称为"短路评估"。如果大于,则将评估和的后半部分,并读取另一个值。您应该每次比较x

x = typedNum.nextInt();
if ((x > 21 && x < 30)) {
System.out.println("in range");
i=1;
} 

最新更新