Возникла ошибка 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.
Это потому, что next()
захватывает только следующий токен, а пробел выступает в качестве разделителя между токенами. И когда вы вводите 2 слова - считывается только первое. А второе считывается методом nextInt()
.
Я так примаю ошибка на строке h1.age = in.nextInt().
Поменяйте h1.name = in.next();
на h1.name = in.nextLine();
и все будет хорошо
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Допустим у нас есть код:
Задача: осуществить поиск по словамНапример, есть слово strong (это первый массив), а есть armstrong (это второй массив)