Ввод с кливиатуры и exeption

255
27 ноября 2017, 18:14

Привет всем! Пишу консольное приложение. В switch я поставил ввод с клавиатуры,но если юзер введет не число - летит exeption и программа закрывается. как сделать что-бы "на лету" проверялся тип данных?Я пробывал в catch рукурсию засунуть.Не работает:))

@Override
public int startMenu() { //переделать в свитч // закинуть на стакоф
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Добрый день! \nСделайте выбор:\n1)Cоздать список.\n2)Выход");
    int choice = 0;
    int result = 0;
    try {
        while (true) {
            choice = Integer.parseInt(reader.readLine());
            switch (choice){
                case 1 : result = 1;
                break;
                case 2 : result = 2;
                break;
                default:
                    System.out.println("Ошибка выбора операции.Сделайте выбор и введите номер операции!");
            }
        }
    } catch (Exception e) {
        System.out.println("Ошибка выбора операции.Сделайте выбор и введите номер операции!");
    }
    return result;
}
Answer 1
@Override
public int startMenu() {        
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Добрый день! \nСделайте выбор:\n1)Cоздать список.\n2)Выход");
    int choice = 0;
    int result = 0;
    boolean bool = false;
    while (!bool) {
        try {
            choice = Integer.parseInt(reader.readLine());
            switch (choice) {
            case 1 : 
                result = 1;
                bool = true;
                break;
            case 2 :
                result = 2;
                bool = true;
                break;
            default:
                System.out.println("Ошибка выбора операции. Сделайте выбор и введите номер операции!");
            }
        } catch (Exception e) {
            System.out.println("Ошибка выбора операции. Введите целое число!");
        }
    }
    return result;
}
Answer 2
public int startMenu() { //переделать в свитч // закинуть на стакоф
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Добрый день! \nСделайте выбор:\n1)Cоздать список.\n2)Выход");
    while (true) {
        try {
            int result = Integer.valueOf(reader.readLine());
            if (result == 1 || result == 2) return result;
            else throw new IOException();
        } catch (IOException | NumberFormatException ex) {
            System.out.println("Ошибка выбора операции.Сделайте выбор и введите номер операции!");
        }
    }
}
READ ALSO
Java, Сортировка нескольких списков через Collections.sort()

Java, Сортировка нескольких списков через Collections.sort()

Добрый день, у меня появилась необходимость отсортировать список чисел по убыванию, я бы воспользовался Collectionssort(), но к моему списку привязаны...

179
Подлагивания аудио воспроизводимого MediaPlayer'ом JavaFX

Подлагивания аудио воспроизводимого MediaPlayer'ом JavaFX

Добрый день, вопрос собственно в заголовке, единственное что нужно добавить, я воспроизвожу аудио прямо из сетиТаким образом, если использовать,...

252
Не работает GUI в IntelliJ

Не работает GUI в IntelliJ

Создал программу чётко по этому гайду:

203
ProgressBar в RecyclerView

ProgressBar в RecyclerView

Логика приложения следующаяПрилага парсит первую страницу новостного портала и отображает ее в RecyclerView, как только пользователь прокручивает...

402