java.util.InputMismatchException и как с ним бороться

219
15 января 2018, 08:42

Доброго времени суток. Решаю задачу, нужно ввести с клавиатуры 2 числа, одно типа int, второе с плавающей точкой, т.е. double или float.

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    for (int i = 0; i < 2; i++) {
       int  a = scanner.nextInt();
       double b = scanner.nextDouble();

Привел кусок кода который соответственно проблемный, исключение выдает прямо на строке где вводится double. Я знаю, что это исключение лезет когда несоответствие типов, но у меня все соответствует! Пример исходных данных:

50 1.88   
14 1.42    
55 2.81
Answer 1
Scanner scanner = new Scanner(System.in);
int i = 0;
double d = 0;
while (true) {
    try {
        i = Integer.valueOf(scanner.nextLine().trim());
        d = Double.valueOf(scanner.nextLine().trim().replace(",", "."));
        break;
    } catch (NumberFormatException e) {
        System.out.println("Ошибка ввода");
    }
}
System.out.println(i + " * " + d);

Сделайте так. Это пользовательский ввод, посему прилететь может что угодно, в т.ч. совсем не цифры. Поэтому берите строку, обрезайте пробелы, меняйте запятую на точку в случае с даблом и пытайтесь ее затолкать в инт или дабл. Этот код не упадет, а цикл в совокупность с блоком, перехватывающим исключения, заставит пользователя вводить значения до тех пор, пока не будут введены именно числа.

READ ALSO
Требуется оптимизация RxJava кода

Требуется оптимизация RxJava кода

RxJava начал изучать недавноНо в принципе понял как все работает

302
Почему не умирает поток в java?

Почему не умирает поток в java?

Добрый деньРазбираю код из книжки (чат клиент)

267
Знаки вопроса вместо кириллицы в JSON

Знаки вопроса вместо кириллицы в JSON

ЗдравствуйтеМеня интересует как можно решить проблему с отображением знаков вопроса вместо кириллических символов в JSON полученном Ajax-запросом

272