Cómo asignar una acción específica al botón ( “Cancelar”) dentro de (JOptionPane.showInputDialog) en Java?

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

Pregunta

Aquí está mi pregunta con un código de ejemplo corto:

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

* El problema con el código anterior es que cuando hago clic en el botón "cancelar", el programa está golpeando ambos errores:. (El fuera de cobertura y la entrada no válida)

alguna sugerencia de cómo puedo solucionar este problema?

Gracias de antemano

¿Fue útil?

Solución

En primer lugar, es necesario verificar si la entrada es nulo. Si no, entonces se utiliza parseDouble en él.

De esta manera:

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

Además, trate de no capturar las excepciones al poner "Excepción", como lo hizo. Siempre trate de especificar la excepción que busca tanto como sea posible. En este caso, se debe utilizar en lugar de sólo NumberFormatException excepción.

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

Otros consejos

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


    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top