我使用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());
}
}
答案 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"
,它不是整数。