2010-08-18 10 views
2

J'ai un Swing JTextBox qui tiendra essentiellement un double.Validation de la zone de texte Java à l'aide de Double.parseDouble()

Je trouve que l'utilisation:

Double.parseDouble(this.myTB.getText()); 

lancera une exception (et donc est terminé programme) chaque fois que Double.parseDouble() obtient une entrée invalide.

Ma question: existe-t-il un moyen facile de ne pas lever une exception, et de renvoyer un entier (-1) disant que parseDouble() a échoué?

J'essaie de faire un popup pour l'utilisateur en disant que son champ de données est invalide.

Merci


EDIT:

Merci lol. Comment pourrais-je oublier d'attraper des exceptions? ça a été une longue journée!

Répondre

7

La meilleure façon de gérer cela est d'utiliser un bloc try/catch.

try { 
    return Double.parseDouble(this.myTB.getText()); 
} catch (NumberFormatException e) { 
    JOptionPane.showMessageDialog("Oops"); 
    return -1; 
} 

Le JOptionPane est un excellent moyen d'afficher des messages d'avertissement aux utilisateurs.

0

Attrapez le NumberFormatException et renvoyez la valeur d'erreur souhaitée (ou effectuez une autre action dans la clause catch).

double value = -1; 
try { 
    value = Double.parseDouble(this.myTB.getText()); 
} catch (NumberFormatException e) { 
    e.printStackTrace(); 
} 
return value; 
+0

Merci! Cependant, il semble que même après avoir attrapé l'exception ... il apparaît toujours dans la sortie de la console. Y at-il de toute façon à supprimer l'exception après qu'elle a été attrapée? –

+0

en supprimant 'e.printStackTrace();' empêchera l'exception d'apparaître sur la console. –

0

Utilisez

try{ 
    return Double.parseDouble(this.myTB.getText()); 
    } catch(NumberFormatException e) { 
     return -1; 
    }