Остановка/сброс функции в Java, если критерии проверки не соблюдены

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

Что мне нужно для правильной работы, так это возврат для попытки, если номер недействителен, функция должна остановиться и заставить пользователя повторить попытку, я думаю о чем-то вроде Exit Sub из VB. Мои поиски показали, что я использую возврат, как показано ниже, но это просто вызывает ошибку, поскольку компилятор думает, что я пытаюсь вернуть результат функции.

В функции есть немного больше, но я вырезал это, так как это не имеет значения; это просто bGarage = true; и return bGarage;.

public boolean fnGarageLevel() {//Beginning of Garage Validation Function

    int nGarage;
    boolean bGarage;

    try {//Garage Number Validation Try

        nGarage = Integer.parseInt(tfGarage.getText());

     if (nGarage != 1 || nGarage != 2 || nGarage != 3 || nGarage != 4) {

            JOptionPane.showMessageDialog( null,
                     "Enter a valid Garage Level, 1, 2, 3 or 4",
                     "Error",
                     JOptionPane.ERROR_MESSAGE);

                     tfGarage.setText("");
                     tfGarage.grabFocus();
                     return;

            }//End of Error Message

    }//End of try

    catch (NumberFormatException nfe) {//Beginning of Catch

        JOptionPane.showMessageDialog(null,
                        "Value Entered for Garage is not a Number",
                        "Error",
                        JOptionPane.ERROR_MESSAGE);

        tfGarage.setText("");
        tfGarage.grabFocus();

    }//End of Catch for Garage field

    bGarage = true;
    return bGarage;

}//End of Garage Function

person Colby Bradbury    schedule 14.10.2013    source источник


Ответы (1)


Когда секция try завершает свою работу успешно (то есть без перехвата каких-либо исключений), управление переходит сразу в конец секции catch или (если он есть) переходит в секцию finally. В этом случае элемент управления переходит к bGarage=true предложению, когда try заканчивается. Удалите оператор return;, он не нужен.

person SonicARG    schedule 14.10.2013
comment
Спасибо, теперь я понял. - person Colby Bradbury; 14.10.2013