Puisque vous avez mentionné que vous avez appris the Scanner
object, je suppose que les méthodes de cette classe sont à votre disposition pour votre usage. Dans ce cas, vous pouvez détecter si une entrée est un nombre entier, double ou simplement obtenir une ligne entière. Les méthodes que vous seriez plus être intéressé ici serait la méthode hasNextDouble()
(retourne un boolean
indiquant si oui ou non le jeton courant dans le Scanner
est en fait un double
ou non) et la méthode nextDouble()
(si le prochain jeton dans le Scanner
est en fait une double
, l'analyser à partir du Scanner
comme un). C'est probablement la meilleure direction pour déterminer les types d'entrée à partir d'un fichier ou d'une entrée standard.
Une autre option consiste à utiliser les méthodes statiques wrapper classes pour convertir des valeurs. Ceux-ci sont généralement nommés comme Integer.parseInt(str)
ou Double.parseDouble(str)
qui convertira un objet String
donné en type de base approprié. Voir la méthode des classes Double
pasrseDouble(String s)
pour plus de détails. Il pourrait être utilisé de cette façon:
String value = "123.45"
double convertedValue = 0.0;
try {
convertedValue = Double.parseDouble(value);
} catch (NuberFormatException nfe) {
System.err.println("Not a double");
}
Cette méthode est probablement mieux utilisé pour les valeurs qui existent dans l'application déjà et doivent être vérifiés (il serait exagéré de construire un Scanner
sur un petit String
à cet effet).
Enfin, encore un autre potentiel (mais pas très propre, simple, ou probablement technique correcte) pourrait regarder l'objet String
directement et en essayant de trouver s'il contient un point décimal, ou d'autres indicateurs qu'il est en fait un double
. Vous pouvez être en mesure d'utiliser indexOf(String substr)
pour déterminer si elle apparaît dans le String
jamais. Je suppose que cette méthode a beaucoup de problèmes potentiels (par exemple, si le String
a plusieurs '.' Caractères?). Je ne suggérerais pas cette route parce que c'est une erreur sujette et difficile à suivre. Cela pourrait être une option si c'est ce que sont les contraintes, cependant.
Donc, à mon humble avis, vos options devrait aller comme suit:
- Utilisez les méthodes
Scanner
hasNextDouble()
et nextDouble()
- Utilisez les méthodes de classe wrapper
Double.parseDouble(String s)
- Utilisez
String
méthodes pour tenter d'identifier la valeur (éviter cette technique à tout prix si l'une des options ci-dessus est disponible).
On dirait une classe amusante. – CtrlDot