2016-02-25 29 views
2

你好,我的问题是这个程序。循环与hasNextInt()实际阅读?

int integer = 0; 
int evenInts = 0; 
Scanner in = new Scanner(System.in); 
System.out.print("Enter an integer: "); 
integer = in.nextInt(); 
while(in.hasNextInt()){ 
    System.out.print("Enter an integer: "); 
    integer = in.nextInt(); } 

在“Enter an integer:”被询问后,它应该读入int。之后,只要整数被放入输入,这个过程就会重复。 其实它打印是这样的:

Enter an integer: 10 
10 // so basically the 

“输入一个整数:”

消息不会被打印这次

输入一个整数:12

如果我离开integer = in.nextInt(); while循环之前的代码部分一切正常。为什么程序的行为如此?是因为缓冲还是逻辑错误?

谢谢!

回答

1

这是因为您已用完输入流中的唯一整数,并且hasNextInt()返回false,因为输入流中没有下一个int。

System.out.print("Enter an integer: "); 
integer = in.nextInt();// here you have read the int there is no more next int 

你可以使用一个do while循环

do{ 
System.out.print("Enter an integer: "); 
integer = in.nextInt(); 
}while(in.hasNextInt()); 
+0

但是,为什么我可以扫描另一个int如果hasNextInt()方法会返回false? – CamelWriter

+0

10 //基本上//这里你给了下一个int – Anuswadh

0

把它放进一个do-while循环:

do{ 
    System.out.print("Enter an integer: "); 
    integer = in.nextInt(); 
}while(in.hasNextInt()); 

请注意,这些值必须用空格继续循环分离。