|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.08.2019, 18:27 | #1 |
Новичок
Джуниор
Регистрация: 15.08.2019
Сообщений: 2
|
цикл do-while
Здравствуйте уважаемые форумчане. Выполняя одно упражнение, я натолкнулся на одну проблемку, которую никак не пойму как решить. Упражнение такое "Используя бесконечный цикл do-while, заставьте пользователя ввести положительное целое число. Если пользователь вводит что-то некорректное, то сообщайте ему об этом и просите снова ввести положительное целое число. И так до бесконечности, пока он не введёт правильный вариант. Как только он вводит правильный вариант, выходите из цикла, и выводите JOptionPane с сообщением: «Спасибо!» " Проблема в том, что я не пойму как сделать так, чтобы при введении пользователем строкового значения, давать ему знать, что это строковое значение. Сейчас при вводе строкового значения, программа выдаёт ошибку. Внизу код, написанный мною. Если кто поможет, буду очень благодарен.
Код:
|
15.08.2019, 19:48 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,759
|
Не знаю, что вы имели в виду под строковым значением... но парсеДабл вполне себе генерирует NumberFormatException и NullPointerException. Поэтому лишние проверки можно убрать и просто ловить исключения.
|
15.08.2019, 20:57 | #3 |
Новичок
Джуниор
Регистрация: 15.08.2019
Сообщений: 2
|
Я имел в виду буквы или символы. Если ввести цифры, то всё работает, но при вводе букв или символов программа выдаёт ошибку.
|
15.08.2019, 21:11 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,759
|
Читайте выше мой пост до конца.
|
16.01.2020, 13:19 | #5 |
Новичок
Джуниор
Регистрация: 18.06.2018
Сообщений: 3
|
По изучай try cathc
вот рабочий код package homeWork10; import javax.swing.JOptionPane; class HomeWork10 { public static void main(String[] args) { String in; double n = 0; do { in = JOptionPane.showInputDialog("Введит е положительное число"); if (in != null && !in.equals("")) { try{ n = Double.parseDouble(in); if (n < 0) JOptionPane.showMessageDialog(null, "Вы ввели отрицательное число!"); else if (n == 0) JOptionPane.showMessageDialog(null, "Вы ввели ноль!"); else if (n % 1 != 0) JOptionPane.showMessageDialog(null, "Вы ввели не целое число!"); }catch(Exception e){ JOptionPane.showMessageDialog(null, "Вы ввели не числовое значение"); } } if (in == null || in.equals("")) JOptionPane.showMessageDialog(null, "Вы ничего не ввели"); } while (n < 0 || n == 0 || n % 1 != 0 || in == null || in.equals("")); JOptionPane.showMessageDialog(null, "Спасибо!"); } } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Если поставить цикл For в цикл Repeat то как будут выполняться циклы? | Владимир10101 | Помощь студентам | 3 | 14.11.2016 20:14 |
написать процедуры для “Цикл For ... Next ” и «Цикл Do ... Loop» по ниже приведенному условию | Кристина_Патачиц | Microsoft Office Excel | 3 | 17.04.2013 17:01 |
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? | Anarki | Общие вопросы C/C++ | 3 | 13.11.2009 19:23 |
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) | Mr.User | Помощь студентам | 9 | 23.11.2007 01:34 |