为什么只交替显示输出?

Why is output shown only alternately?

public class Two {

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

    while(obj.nextInt() > 5)
    {

        System.out.println(obj.nextInt());
    }
}
}

如果我第一次输入数字 (> 5),控制台上没有输出,但如果我第二次输入数字,控制台上有输出。 所以我交替得到一个输出。 谁能解释为什么会这样?

java.util.Scanner.nextInt() 方法将输入的下一个标记扫描为 int 和 returns。读取令牌后,另一个 nextInt()-Call 将读取(如名称所示)next 整数。

我想你在期待这样的事情:

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

    while((read = scanner.nextInt()) > 5)
    {
        System.out.println(read);
    }
}

现在读取的整数存储在变量 read 中并打印,如果它大于五。

你每隔一个输入就得到输出的原因是你提示 Scanner 对象在你的循环系统中收集输入两次。每次您在 Scanner 上调用 next... 方法时,您都会提示用户。

因此,在 while 循环的条件下,您要求用户输入一个整数值,然后将其与 5 进行比较。然后,在您的 print 语句中再次调用 nextInt() 方法,该方法将再次提示用户输入另一个值整数。

因此,给定当前循环 6 2 10 4 的一系列 6 个整数输入,您的循环将仅打印 24.

相反,您应该在循环外提示并存储一次,然后使用条件进行测试并在循环内打印后重新提示,就像这样...

int input = obj.nextInt();
while (input > 5){
    System.out.println(input);
    input = obj.nextInt();
}