为什么仅交替显示输出?

时间:2016-02-26 16:15:56

标签: java java-7

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),控制台上没有输出,但如果我在第二次输入数字,则控制台上会有输出。 所以我得到一个输出。 任何人都可以解释为什么会如此?

2 个答案:

答案 0 :(得分:3)

java.util.Scanner.nextInt()方法将输入的下一个标记扫描为int并返回它。读取令牌后,另一个nextInt() - 呼叫将读取(如名称所示) 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中,如果大于5,则打印出来。

答案 1 :(得分:1)

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

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

因此,为当前循环6 2 10 4提供一系列6个整数输入,您循环只会打印24

相反,你应该在你的循环之外提示和存储一次,然后用条件测试并在循环中打印之后重新启动,如此...

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