为什么Scanner中缺少输入的最后一个元素?

时间:2017-05-22 14:36:58

标签: java input stdin delimiter

我使用IntelliJ,我的扫描仪有问题。输出中缺少输入中的最后一个元素。有任何想法吗?

输入:1, 2, 3
输出:1, 2

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in).useDelimiter(", ");
    while (sc.hasNext()) {
        System.out.print(sc.nextInt());
    }
}

1 个答案:

答案 0 :(得分:1)

因为扫描程序未读取System.in:stdin流未关闭,仍在等待令牌结束(下一次出现", ")或流结束。

您还需要将sc.hasNext()更改为sc.hasNextInt(),因为您使用了sc.nextInt()

然后你可以在命令行上执行你的程序,它应该正确显示3:

echo -n "1, 2, 3" | java MyScannerExample

然而:

echo "1, 2, 3" | java MyScannerExample

显示3,因为输入字符串实际上是"1, 2, 3\n",因此最后一个标记是"3\n",它不是整数。