Wie eine bestimmte Aktion auf die ( „Cancel“), um innerhalb (JOptionPane.showInputDialog) in Java zuweisen?

StackOverflow https://stackoverflow.com/questions/4608124

Frage

Hier ist meine Frage mit einem kurzen Beispielcode:

 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");
}

* Das Problem mit dem obigen Code ist, dass, wenn ich die auf „Abbrechen“ klicken, das Programm beide Fehler trifft. (Der sich außerhalb der Reichweite und die ungültige Eingabe)

Bitte irgendwelche Vorschläge, wie ich dieses Problem beheben?

Vielen Dank im Voraus

War es hilfreich?

Lösung

Zuerst müssen Sie überprüfen, ob die Eingabe null ist. Wenn nicht, dann verwenden Sie parseDouble auf sie.

Wie folgt aus:

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

Versuchen Sie auch, keine Ausnahmen fangen von „Exception“ setzen, wie Sie haben. Versuchen Sie immer, die Ausnahme geben Sie suchen, so viel wie möglich. In diesem Fall sollten Sie Number statt nur Exception verwenden.

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

Andere Tipps

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");
        }


    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top