Java hasNextInt不会返回false并退出循环

Java hasNextInt不会返回false并退出循环,java,input,Java,Input,我试图将用户输入放入数组,但hasNextInt方法不会返回false并停止输入 public static void main (String[] args) { Scanner in = new Scanner(System.in); int target = in.nextInt(); while(in.hasNextInt()) { weights.insert(in.nextInt()); } recKnapSack(target, 0); }

我试图将用户输入放入数组,但hasNextInt方法不会返回false并停止输入

public static void main (String[] args) {

  Scanner in = new Scanner(System.in);

  int target = in.nextInt();
  while(in.hasNextInt()) {
     weights.insert(in.nextInt());
  }
  recKnapSack(target, 0);
}   
Scanner.hasNextInt在其缓冲区中遇到非整数字符时将返回false。 但是,在读取提示时,它可能会去掉空白。因此,空格+回车或回车很可能不会停止循环。但任何其他角色都会

由于您希望输入任意数量的int,因此必须指示用户在完成输入时键入什么。事实上,如果您正在编写一个控制台应用程序,最好总是解释为什么程序在等待输入

任何非整数都将停止循环条件。在这种情况下,语法将按原样工作,用户只需要一些说明:

System.out.println("Please enter the target");
int target = in.nextInt();
System.out.println("Enter weights. Type 'X' to stop");
while(in.hasNextInt()) {

您是否正在关闭stdin,例如使用ctrl-d?如果不是,它怎么知道将来某个时候不会有int呢?你是如何运行代码的?如果你从用户那里得到输入,那么总是会有下一个int。你希望它什么时候返回false?在什么情况下?我的意思是,很容易让它返回错误。只需键入任何不是整数值的内容。示例:q,x,Foo,立即停止!!!,!@$%^&*。。。我要做的是输入任意数量的int。我是否必须指定要输入多少个int,或者是否有方法写入循环,以便在用户停止输入int时停止输入。什么表示用户已停止输入int?