2016-02-26 78 views
0
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),控制台上没有输出,但是如果我在第二次输入数字,请尝试在控制台上输出。 所以我得到了一个输出。 任何人都可以解释为什么是这样吗?为什么输出仅交替显示?

+5

当你调用'nextInt()'的第二次尝试从控制台读取另一个'int'。 – Bifz

+0

你在期待什么? –

+0

您正在打印每个备选输入。 – Kishore

回答

1

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

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

因此,给定一系列6个整数输入为您的当前循环,​​3210,您循环将只打印24

相反,你应该及时和你的循环之外存储一次,然后用条件测试和像这样的循环中的打印之后重新提示...

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

非常感谢!实际上我试图在不存储它的情况下进行打印。 – shiwchiz

3

java.util.Scanner.nextInt()方法将输入的下一个标记扫描为int并将其返回。在令牌被读取后,另一个nextInt() - 将读取(如名称所述)下一个整数。

我认为你是这样期待着什么:

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

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

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