java:Scanner在使用useDelimiter时要求额外的值

java:Scanner在使用useDelimiter时要求额外的值,java,java.util.scanner,delimiter-separated-values,Java,Java.util.scanner,Delimiter Separated Values,所以我想创建一个存储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

所以我想创建一个存储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);
    }

}

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


我相信,如果您输入
日本,1,2,3,
它将为您提供所需的输出。

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

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

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

是的,但我不想最后陷入昏迷。我还能做什么吗?是的,你可以通过编程添加逗号。也可能有办法改变delimeter,但我不确定