【问题标题】:Why last element of input is missing in Scanner?为什么扫描仪中缺少输入的最后一个元素?
【发布时间】:2017-05-22 14:36:57
【问题描述】:

我使用 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());
    }
}

【问题讨论】:

    标签: java input stdin delimiter


    【解决方案1】:

    因为 Scanner 未完成对 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",它不是整数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 2017-08-11
      相关资源
      最近更新 更多