Как назначить отдельное действие для кнопки («Отмена») в (JOptionPane.showInputDialog) в Java? - PullRequest
1 голос
/ 05 января 2011

Вот мой вопрос с кратким примером кода:

 double num = 0.00;

try
{
    num = Double.parseDouble(JOptionPane.showInputDialog("Enter your num:"));

}

catch (Exception e)
{
    System.err.println("Error: Invalid Input!");
    JOptionPane.showMessageDialog(null, "Error: Invalid Input!",  
    "Error", JOptionPane.ERROR_MESSAGE);
}

//Validate the num

if (num > 0.0 && num <= 1000.00)
{
    functionA();
}

else if (deposit <= 0.0 || deposit > 1000.00)
{
 System.err.println("Error: out of range");
}

* Проблема с приведенным выше кодом заключается в том, что, когда я нажимаю кнопку «Отмена», программа вызывает обе ошибки: (выход за пределы допустимого диапазона и неверный ввод).

Пожалуйста, какие-либо предложения, как я могу это исправить?

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 05 января 2011

Во-первых, вам нужно проверить, является ли ввод нулевым.Если нет, то вы используете для него parseDouble.

Примерно так:

try
{
    String i = JOptionPane.showInputDialog("Enter your num:");
    if (i != null)
        num = Double.parseDouble(i);
}

Кроме того, постарайтесь не перехватывать исключения, поставив «Exception», как вы это сделали.Всегда старайтесь указать исключение, которое вы ищете, как можно больше.В этом случае вы должны использовать NumberFormatException вместо только Exception.

catch (NumberFormatException e)
{
    System.err.println("Error: Invalid Input!");
    JOptionPane.showMessageDialog(null, "Error: Invalid Input!",  
    "Error", JOptionPane.ERROR_MESSAGE);
}
1 голос
/ 05 января 2011
package org.life.java.so.questions;

import java.text.ParseException;
import javax.swing.JOptionPane;

/**
 *
 * @author Jigar
 */
public class InputDialog {

    public static void main(String[] args) throws ParseException {
        String input = JOptionPane.showInputDialog("Enter Input:");
        if(input == null){
            System.out.println("Calcel presed");
        }else{
            System.out.println("OK presed");
        }


    }
}
...