@EZ9

Почему не работает ввод с консоли Java?

При вводе нескольких значений с консоли выходит данная ошибка.

import java.io.IOException;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws IOException {
       Scanner scanner = new Scanner(System.in);
       int c = Integer.parseInt(scanner.nextLine());
       int b = Integer.parseInt(scanner.nextLine());
        System.out.println(c+b);
    }
}

1
1
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
    at java.base/java.lang.Integer.parseInt(Integer.java:678)
    at java.base/java.lang.Integer.parseInt(Integer.java:784)
    at Main.main(Main.java:9)
  • Вопрос задан
  • 506 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день.
Проблема заключается в следующем:
Вы сперва с вводите первое число и нажимаете на перевод строки (Enter).
Когда вы нажимаете на перевод строки срабатывает ввод числа b, который и принимает собственно говоря знак перевода строки и так как он не является числом, то выбрасывается исключение.
Чтобы этого не было:
int c = Integer.parseInt(scanner.nextLine());
Scanner.nextline();
int b = Integer.parseInt(scanner.nextLine());

И как отметил коллега - используйте nextInt() вместо nextLine()
Вот, аналогичная проблема - https://stackoverflow.com/questions/13102045/scann...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
LaRN
@LaRN
Senior Developer
Если используете класс Scanner, то для считывания чисел из потока удобнее использовать пару методов hasNextInt и nextInt.

Возможно в вашем случае первый вызов scanner.nextLine() вычитал весь поток и при втором вызове вернулась пустая строка.
Ответ написан
Комментировать
@Araya
В ошибке все написано. Ты пытаешься пустую строку привести к числу
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы