0 / 0 / 0
Регистрация: 09.01.2015
Сообщений: 39
1

Конструкция try catch в цикле while. Зацикливается блок catch

23.10.2019, 13:22. Показов 5868. Ответов 1

Здравствуйте. Столкнулся с проблемой: при попытке запихнуть в цикл конструкцию try catch - зацикливается часть, расположенная в блоке catch.

По задумке, код должен выполнять следующую работу:
Пользователю предлагается ввести значение в консоль, и если это значение не является натуральным числом - пользователь получает сообщение о том, что он ввел некорректные данные. После этого пользователь снова должен ввести значение в консоль. И так до тех пор, пока он не введет натуральное число.

Но при вводе любого значения, которое не соответствует типу int - зацикливается блок catch.

Буду очень признателен за помощь в решении.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.util.Scanner;
 
public class Main
{
    public static void main(String[] args) {
        Scanner sc1 = new Scanner(System.in);
        System.out.println("Введите длинну списка:");
        int number = 0;
        
        while (number < 1)
        {
            try 
            {
                number = sc1.nextInt();
                
                if (number < 1)
                {
                    System.out.println("Введите натуральное число (целое число больше нуля)");
                    continue;
                }
                else 
                {
                    break;
                }
                
            } 
            
            catch(Exception e ) 
            {
                System.out.println("Введите натуральное число (вы ввели символ)");
            }
        }
    }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2019, 13:22
Ответы с готовыми решениями:

блок try {} catch() и быстродействие.
Приветствую! Проблема встала об оптимизации ВСЕГО кода по быстродействию. Пришлось уделять...

Проблема с возвращающим значением метода в блоке try-catch
Поставил блок try -catch, начало ругаться на значение return myArray;, которое должен вернуть...

конструкция try/catch
Где здесь ошибка? &lt;html&gt; &lt;head&gt; &lt;script type=&quot;text/javascript&quot;&gt; function factorial(res) {...

Конструкция try . catch
Здравствуйте. Подскажите, как продолжить работу программи после обнаружения ошибки конструкцией...

1
289 / 464 / 84
Регистрация: 26.02.2018
Сообщений: 919
Записей в блоге: 2
23.10.2019, 14:16 2
Цитата Сообщение от Anshag Посмотреть сообщение
sc1.nextInt();
сей метод для того и создан, шо бы читать только целлые числа.
здесь лучше ичспользовать считывание строки, а потом парсить ее в int, при этом ловить исключения, является ли введеное юзверем безобрабие числом, или он вообще вел непонятно шо.
что-то вроде этого:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package help;
 
import java.util.Scanner;
 
public class Helper {
    
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(true){
            String s = sc.nextLine();
            try{
                int namber = Integer.parseInt(s);
                break;
            }catch(NumberFormatException ex){
                System.out.println(s + " не является числом, либо не является натуральным числом");
            }
        }
    }
    
}
результат
Кликните здесь для просмотра всего текста

run:
dfgdf
dfgdf не является числом, либо не является натуральным числом
12.258
12.258 не является числом, либо не является натуральным числом
0.125
0.125 не является числом, либо не является натуральным числом
1258
BUILD SUCCESSFUL (total time: 17 seconds)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2019, 14:16
Помогаю со студенческими работами здесь

Конструкция try / catch - в чем ее суть?
Расскажите пожалуйста о методе try...catch своими словами! что за исключения он обрабатывает???...

Конструкция try catch c объектами класса
Добрый день. Есть класс для хранения денежной суммы. По заданию нужно делать перегрузку операторов....

Как работает конструкция Try - Catch
есть окно в нем два текстбокса, кнопка и лэбел в который выводится результат деления текстовых...

Конструкция Try - Catch выдает ошибку в приведенном коде
Всем привет.Делаю лаунчер и возникла необходимость загрузки файла(архива),для того чтобы программа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru