Ошибка java.util.InputMismatchException

201
12 апреля 2022, 05:10

Возникла ошибка java.util.InputMismatchException. Почитал в интернете что это вроде несоответствие типов, но я ввожу всё верно. Ошибка возникает только если вводить более 1 слова. Кто подскажет в чём ошибка? Если добавить in.nextLine() который ни на что не ссылается после h1.name = in.next(), то всё работает правильно, но мне интересно почему без него ничего не работает..?

  package com.company;
import java.util.Scanner;
import java.util.InputMismatchException;
public class Main {
    public static void main(String[] args) throws InputMismatchException {
        Human h1 = new Human();
        Cat c1 = new Cat();
        Scanner in = new Scanner(System.in);
        System.out.print("Введите имя владельца: ");
        h1.name = in.next();
        //in.nextLine();
        System.out.print("Введите возраст владельца: ");
        h1.age = in.nextInt();
        System.out.print("Введите город проживания владельца: ");
        h1.town = in.next();
        System.out.println("Информация о хозяине: ");
        System.out.println("Имя: "+h1.name);
        System.out.println("Возраст: "+h1.age);
        System.out.println("Город проживания: "+h1.town);
    }
}

h1.name это переменная типа String.

Answer 1

Это потому, что next() захватывает только следующий токен, а пробел выступает в качестве разделителя между токенами. И когда вы вводите 2 слова - считывается только первое. А второе считывается методом nextInt(). Я так примаю ошибка на строке h1.age = in.nextInt().

Поменяйте h1.name = in.next(); на h1.name = in.nextLine(); и все будет хорошо

READ ALSO
Hash sha-256 Java

Hash sha-256 Java

Как рациональнее преобразовать данные(строку) в хэш sha-256?

223
Как осуществить поиск по словам

Как осуществить поиск по словам

Задача: осуществить поиск по словамНапример, есть слово strong (это первый массив), а есть armstrong (это второй массив)

117