Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2019, 18:27   #1
Jiro91
Новичок
Джуниор
 
Регистрация: 15.08.2019
Сообщений: 2
По умолчанию цикл do-while

Здравствуйте уважаемые форумчане. Выполняя одно упражнение, я натолкнулся на одну проблемку, которую никак не пойму как решить. Упражнение такое "Используя бесконечный цикл do-while, заставьте пользователя ввести положительное целое число. Если пользователь вводит что-то некорректное, то сообщайте ему об этом и просите снова ввести положительное целое число. И так до бесконечности, пока он не введёт правильный вариант. Как только он вводит правильный вариант, выходите из цикла, и выводите JOptionPane с сообщением: «Спасибо!» " Проблема в том, что я не пойму как сделать так, чтобы при введении пользователем строкового значения, давать ему знать, что это строковое значение. Сейчас при вводе строкового значения, программа выдаёт ошибку. Внизу код, написанный мною. Если кто поможет, буду очень благодарен.

Код:
package homework10;
import javax.swing.JOptionPane;
public class HomeWork10 {
    public static void main(String[] args) {
        String in;
        double n = 0;
        do {
            in = JOptionPane.showInputDialog("Введите положительное число");
            if (in != null && !in.equals("")) {
                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, "Вы ввели не целое число!");
            } 
            if (in == null || in.equals("")) JOptionPane.showMessageDialog(null, "Вы ничего не ввели");
        } while (n < 0 || n == 0 || n % 1 != 0 || in == null || in.equals(""));
        JOptionPane.showMessageDialog(null, "Спасибо!");
    }
}
Jiro91 вне форума Ответить с цитированием
Старый 15.08.2019, 19:48   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Не знаю, что вы имели в виду под строковым значением... но парсеДабл вполне себе генерирует NumberFormatException и NullPointerException. Поэтому лишние проверки можно убрать и просто ловить исключения.
p51x вне форума Ответить с цитированием
Старый 15.08.2019, 20:57   #3
Jiro91
Новичок
Джуниор
 
Регистрация: 15.08.2019
Сообщений: 2
По умолчанию

Я имел в виду буквы или символы. Если ввести цифры, то всё работает, но при вводе букв или символов программа выдаёт ошибку.
Jiro91 вне форума Ответить с цитированием
Старый 15.08.2019, 21:11   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Читайте выше мой пост до конца.
p51x вне форума Ответить с цитированием
Старый 16.01.2020, 13:19   #5
Stifensvolk
Новичок
Джуниор
 
Регистрация: 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, "Спасибо!");
}
}
Stifensvolk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Если поставить цикл 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