将扫描仪输入直接插入到arraylist

时间:2015-09-22 10:21:34

标签: java

我想从扫描仪中提取输入并将其直接插入到类型安全的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;?时,流不应该终止

2 个答案:

答案 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。
或者,如果它是从下划线流读取:在这种情况下,它可能会阻止。