-2

После запуска пишу в консоли первую строку но переходя на следующую строку выдает ошибку, подскажите кто в курсе что сделать?

import java.util.Scanner;

public class User { String name; short age; int height;

public User() {
}



public static void main(String[] args) {
    Scanner a = new Scanner(System.in);
    User user1 = new User();
    user1.age = a.nextShort();

    user1.height = a.nextInt();

    user1.name = a.nextLine();
    System.out.println("имя пользователя - " + user1.name +
            "возраст - " + user1.age +
            "рост - " + user1.height);
}

}


Вот что выдает консоль

Exception in thread "main" java.util.InputMismatchException
    at java.base/java.util.Scanner.throwFor(Scanner.java:947)
    at java.base/java.util.Scanner.next(Scanner.java:1602)
    at java.base/java.util.Scanner.nextShort(Scanner.java:2127)
    at java.base/java.util.Scanner.nextShort(Scanner.java:2081)
    at User.main(User.java:16)
Grundy
  • 81,538
G F
  • 1

1 Answers1

0

Чтобы обработать исключение InputMismatchException можете воспользоваться try/catch блоком. Так же чтобы сработало ввод имени пользователя, вам нужно дополнительно очистить буфер после считывания чисел.

 public static void main(String[] args) {
        Scanner a = new Scanner(System.in);
        User user = new User();
        try {
        System.out.print("Введите возраст: ");
        short age = a.nextShort();
    System.out.print("Введите рост: ");
    int height = a.nextInt();

    a.nextLine(); // Очистка буфера после считывания чисел

    System.out.print("Введите имя (опционально): ");
    String name = a.nextLine();

    user = new User(name,age,height);

    System.out.println("имя пользователя - " + user.name +
            ", возраст - " + user.age +
            ", рост - " + user.height);

    }catch(InputMismatchException e) {
        System.out.println("В следующий раз введите корректное значение");
    }


}