Je me demande comment faire quelque chose uniquement si Integer.parseInt (peu importe) n'échoue pas.
Plus précisément, j'ai un jTextArea de valeurs spécifiées par l'utilisateur séparées par des sauts de ligne.
Je veux vérifier chaque ligne pour voir si elle peut être convertie en int.
Imaginé quelque chose comme ça, mais cela ne fonctionne pas:
for(int i = 0; i < worlds.jTextArea1.getLineCount(); i++){
if(Integer.parseInt(worlds.jTextArea1.getText(worlds.jTextArea1.getLineStartOffset(i),worlds.jTextArea1.getLineEndOffset(i)) != (null))){}
}
Toute aide appréciée.
public static boolean isParsable(String input){
try{
Integer.parseInt(input);
return true;
}catch(ParseException e){
return false;
}
}
Vérifiez si c'est analysable en entier
public boolean isInteger(String string) {
try {
Integer.valueOf(string);
return true;
} catch (NumberFormatException e) {
return false;
}
}
ou utilisez Scanner
Scanner scanner = new Scanner("Test string: 12.3 dog 12345 cat 1.2E-3");
while (scanner.hasNext()) {
if (scanner.hasNextDouble()) {
Double doubleValue = scanner.nextDouble();
} else {
String stringValue = scanner.next();
}
}
ou utilisez Expression régulière comme
private static Pattern doublePattern = Pattern.compile("-?\\d+(\\.\\d*)?");
public boolean isDouble(String string) {
return doublePattern.matcher(string).matches();
}
Ce serait quelque chose comme ça.
String text = textArea.getText();
Scanner reader = new Scanner(text).useDelimiter("\n");
while(reader.hasNext())
String line = reader.next();
try{
Integer.parseInt(line);
//it worked
}
catch(NumberFormatException e){
//it failed
}
}
parseInt lèvera NumberFormatException s'il ne peut pas analyser l'entier. Donc, cela répondra à votre question
try{
Integer.parseInt(....)
}catch(NumberFormatException e){
//couldn't parse
}
Vous pouvez utiliser un scanner au lieu de try-catch:
Scanner scanner = new Scanner(line).useDelimiter("\n");
if(scanner.hasNextInt()){
System.out.println("yes, it's an int");
}
au lieu de try
ing & catch
ing expressions .. il vaut mieux exécuter regex sur la chaîne pour s'assurer qu'il s'agit d'un nombre valide ..
Tu pourrais essayer
NumberUtils.isParsable(yourInput)
Il fait partie de org/Apache/commons/lang3/math/NumberUtils
Et vérifie si la chaîne peut être analysée par Integer.parseInt(String)
, Long.parseLong(String)
, Float.parseFloat(String)
ou Double.parseDouble(String)
.
Voir ci-dessous:
Vous pouvez utiliser instruction try..catch en Java, pour capturer une exception pouvant survenir à partir de Integer.parseInt ().
Exemple:
try {
int i = Integer.parseint(stringToParse);
//parseInt succeded
} catch(Exception e)
{
//parseInt failed
}