我想从扫描仪中提取输入并将其直接插入到类型安全的arraylist中。这是我的代码:
public static void main(String args[])
{
List<Integer> arglist=new ArrayList<Integer>();
List<Integer> resultlist=new ArrayList<Integer>();
Scanner in=new Scanner(System.in);
System.out.println("Scanning");
while(in.hasNext())
{
arglist.add(in.nextInt());
}
System.out.println("Scan complete, sorting...");
System.out.println(arglist);
resultlist=qksort(arglist);
System.out.println(resultlist);
}
仅当我使用Ctrl + Z显式终止输入时才有效。当我按下&#34;输入&#34;?时,流不应该终止
答案 0 :(得分:1)
按下回车键时不会终止。扫描程序将其读作换行符,并将其解释为令牌之间的分隔符,并愉快地继续。
如果要继续处理,一个非常简单的解决方案是:
while (in.hasNextInt()) {
argList.add(in.nextInt());
}
这样,当您第一次输入不是数字或空格的内容(例如“退出”)时,它将继续。
如果您特别想输入一行,则可以使用扫描仪读取一行,然后扫描该行:
Scanner scanner = new Scanner(System.in);
scanner = new Scanner(scanner.nextLine());
答案 1 :(得分:0)
如果在标准输入的情况下没有像文件或“Ctrl + Z”那样出现End of Stream,那么hasNext()方法正在阻止...它意味着 -
它在缓冲区中找到模式:在这种情况下它返回True。
或者,如果它是从下划线流读取:在这种情况下,它可能会阻止。