Как правильно выйти из исключения JOptionPanel в потоке "main" java.lang.NumberFormatException: null - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь создать графический интерфейс, в котором пользователь должен ввести целое число.Если пользователь вводит нецелое число, он запрашивает графический интерфейс.Я также хочу, чтобы это вышло.Когда я получаю его для выхода, я получаю эту ошибку:

Исключение в потоке "main" java.lang.NumberFormatException: null.

Я немногонуб и нужно какое-то руководство :)

public class Generator

{


    public static void main (String[] args)
    { String input = JOptionPane.showInputDialog("Enter Desired Analysis level");
        int analysisLevel = Integer.parseInt(input);
        try
        {
            if (analysisLevel >= 0)
            {
                System.out.println(analysisLevel);

            }


            else
            {

                input = JOptionPane.showInputDialog("Enter Desired Analysis level");

            }
        }
        catch (Exception e)
        {
            System.out.println("Input was no number" + e);
            System.exit(0);

        }
        System.exit(0);
}
}

Ответы [ 3 ]

0 голосов
/ 26 сентября 2018

Вы печатаете ошибку в блоке catch - NumberFormatException - это то, что выдается, когда вы пытаетесь проанализировать нецелое число как целое число.Единственная проблема заключается в том, что строка с ошибкой находится не в блоке try.

0 голосов
/ 26 сентября 2018

Попробуйте это.Это использует исключение:

public static void main(String[] args) {
    String input = JOptionPane.showInputDialog("Enter Desired Analysis level");
    try {
        int analysisLevel = Integer.parseInt(input);
        //Code you want to run when analysisLevel is a number
        if (analysisLevel >= 0) {
            System.out.println(analysisLevel);
        }
    } catch (NumberFormatException nfe) {
        //Code you want to run when analysisLevel isn't a number
        input = JOptionPane.showInputDialog("Enter Desired Analysis level");
    }
    System.exit(0);
}
0 голосов
/ 26 сентября 2018

Проблема в том, что вы оставили одну строку, которая, скорее всего, вызовет исключение (int analysisLevel = Integer.parseInt(input);) из блока try / catch.Вам нужно переместить его внутрь:

String input = JOptionPane.showInputDialog("Enter Desired Analysis level");
try
{
    int analysisLevel = Integer.parseInt(input);
    if (analysisLevel >= 0) {
        System.out.println(analysisLevel);
    } else {
        input = JOptionPane.showInputDialog("Enter Desired Analysis level");
    }
}
catch (Exception e)
{
    System.out.println("Input was no number. " + e);  
}

Кроме того, вам не нужны System.exit(0);, поскольку программа все равно завершится, и использование System.exit(0);, как правило, не является хорошей практикой.

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