【问题标题】:java: Scanner asks for an extra value when using useDelimiterjava: 扫描器在使用 useDelimiter 时要求一个额外的值
【发布时间】:2018-07-17 21:51:24
【问题描述】:

所以我想创建一个存储 4 个值的程序。第一个是字符串,其余 3 个是整数。但是,当我输入 4 个值并按 Enter 时,我收到错误 java.util.InputMismatchException 但是当我输入 5 个值时,我得到我的 for 值的结果。例如,假设我输入了以下值:

Japan,1,2,3

我会收到java.util.InputMismatchException 错误。如果我输入以下值:-

Japan,1,2,3,4

我得到了我想要的输出:-

Japan,1,2,3

为什么会这样?这是我的代码

public class satisfaction {

    public static void main(String args[])
    {
        Scanner src= new Scanner(System.in);
        src.useDelimiter("\\,|\\n");
        String name=src.next();
        int a=src.nextInt();
        int b=src.nextInt();
        int c=src.nextInt();
        System.out.println(name+","+a+","+b+","+c);
    }

}

【问题讨论】:

    标签: java java.util.scanner csv


    【解决方案1】:

    我自己对此进行了一些测试,我认为模式中的 \n 与您的控制台使用的行尾不匹配。

    对我来说,我必须改用\r\n,但你也可以使用System.lineSeparator(),例如像这样:

    src.useDelimiter(",|" + System.lineSeparator());
    

    【讨论】:

      【解决方案2】:

      按照它的写法,它需要在输入的末尾加上一个逗号。我建议检查字符串以确保它以逗号结尾,如果不是,请追加一个。

      我相信如果你输入Japan,1,2,3,它会给你想要的输出。

      【讨论】:

      • 是的,但我不想在最后昏迷。还有什么我可以做的吗?
      • 是的,您可以通过编程方式添加逗号。也可能有一种方法可以更改分隔符,但我不确定
      猜你喜欢
      • 2011-02-25
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多