Мне нужно выполнить аутентификацию пользователя и вернуть пользователя, если он недействителен в java

0 Adesh [2012-10-23 17:48:00]

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

void validateItemquantity() {
    boolean error = true;
    while (error) {
        try{ 
            Integer.parseInt(itemQuantityinput.getText());
            error = false; 
        }
        catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Item quantity must be a positive number, please reenter");
            error = true; 
        }
    }
}

Часть кода из метода jframe:

private void bnPurchaseActionPerformed(java.awt.event.ActionEvent evt) {                                           

        String itemCode; 
        int itemQuantity, itemPrice, itemCost, totalCost ;

        validateItemquantity();
        itemCode = itemCodeinput.getText();
        itemQuantity = Integer.parseInt(itemQuantityinput.getText());
        itemPrice = catalog.searchCatalog(itemCode);
        itemCost = payment.calculateItemcost(itemQuantity,itemPrice);
        totalCost = payment.calculateTotalcost(itemCost);

java validation try-catch


3 ответа


1 Решение La bla bla [2012-10-23 17:59:00]

Я думаю, что цикл должен быть в вызывающем методе.

boolean validateItemquantity() {
    try{ 
        Integer.parseInt(itemQuantityinput.getText());
        return true; 
    }
    catch (NumberFormatException e) {
        JOptionPane.showMessageDialog(null, "Item quantity must be a positive number, please reenter");
        error = false; 
    }
}

И вызывающая часть должна быть чем-то вроде этого

while(!validateItemquantity())

2 Anirudh Ramanathan [2012-10-23 17:57:00]

Метод validateItemquantity() должен возвращать значение true или false в зависимости от того, действителен ли вход или нет.

Вы можете позаботиться об истинных и ложных случаях в вызывающей функции. Чтобы принять ввод, вы могли бы показать диалоговое окно ввода.

String text = JOptionPane.showInputDialog ("Enter New Value"));

1 salbeira [2012-10-23 18:06:00]

Если пользователь вводит неправильное значение, ваш метод будет работать бесконечно. Если метод не дождался закрытия JOptionPane, вы столкнетесь с неизмеримым количеством всплывающих окон.

Вы должны позволить методу возвращать логическое значение в любом случае и изменять какое-то "состояние", другое логическое или какое-либо другое переменное состояния, в вашей программе, если оно преуспеет.

Если это не так, вы можете позволить своему "циклу" вернуться к точке, в которой пользователь должен ввести номер, а затем позволить ему перезапустить процесс проверки, но, на мой взгляд, вы не должны перезапускать процесс проверки на нем, когда он выходит из строя.