Оператор цикла do-while

 
 
 
Сообщения:1
Здравствуйте уважаемые форумчане. Выполняя одно упражнение, я натолкнулся на одну проблемку, которую никак не пойму как решить. Упражнение такое "Используя бесконечный цикл 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, "Спасибо!");
    }
}
Изменен:15 авг 2019 13:31
 
 
Сообщения:932
Double.parseDouble(in); бросает NumberFormatException. оберни в try/catch
Изменен:16 авг 2019 03:36
 
Модераторы:frymock
Сейчас эту тему просматривают:Нет