Java: сканер запрашивает дополнительное значение при использовании useDelimiter

Поэтому я хочу создать эту программу, которая хранит 4 значения. первый - строка, а остальные 3 - целые числа. Однако, когда я ввожу 4 значения и нажимаю ввод, я получаю ошибку java.util.InputMismatchException но когда я ввожу 5 значений, я получаю результат для моих значений. Например, допустим, я ввел следующие значения:

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);
    }

}

2 ответа

Решение

Я немного проверил это, и я думаю, что \n в шаблоне не совпадает конец строки, используемый вашей консолью.

Для меня я должен был использовать \r\n вместо этого, но вы также можете использовать System.lineSeparator() например, вот так:

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

Как написано, нужна еще одна запятая в конце ввода. Я бы порекомендовал проверить строку, чтобы убедиться, что она заканчивается запятой, а если нет, добавьте ее.

Я считаю, что если вы введете Japan,1,2,3, это даст вам желаемый результат.

Другие вопросы по тегам