Integer.parseInt(whatever)が失敗しない場合にのみ、何かをする方法を疑問に思っています。
より具体的には、改行で区切られたユーザー指定の値のjTextAreaがあります。
各行をチェックして、intに変換できるかどうかを確認します。
このようなものを考え出しましたが、うまくいきません:
for(int i = 0; i < worlds.jTextArea1.getLineCount(); i++){
if(Integer.parseInt(worlds.jTextArea1.getText(worlds.jTextArea1.getLineStartOffset(i),worlds.jTextArea1.getLineEndOffset(i)) != (null))){}
}
任意の助けに感謝します。
public static boolean isParsable(String input){
try{
Integer.parseInt(input);
return true;
}catch(ParseException e){
return false;
}
}
integer parseableかどうかを確認します
public boolean isInteger(String string) {
try {
Integer.valueOf(string);
return true;
} catch (NumberFormatException e) {
return false;
}
}
または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();
}
}
または正規表現 likeを使用します
private static Pattern doublePattern = Pattern.compile("-?\\d+(\\.\\d*)?");
public boolean isDouble(String string) {
return doublePattern.matcher(string).matches();
}
それはこのようなものでしょう。
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は、整数を解析できない場合、 NumberFormatException をスローします。これを行うと、あなたの質問に答えます
try{
Integer.parseInt(....)
}catch(NumberFormatException e){
//couldn't parse
}
Try-catchの代わりにスキャナーを使用できます。
Scanner scanner = new Scanner(line).useDelimiter("\n");
if(scanner.hasNextInt()){
System.out.println("yes, it's an int");
}
try
ing&catch
ing式の代わりに、文字列に対して正規表現を実行して、有効な数値であることを確認することをお勧めします。
試すことができます
NumberUtils.isParsable(yourInput)
org/Apache/commons/lang3/math/NumberUtils
の一部であり、Integer.parseInt(String)
、Long.parseLong(String)
、Float.parseFloat(String)
、またはDouble.parseDouble(String)
で文字列を解析できるかどうかをチェックします。
下記参照:
Javaで try..catchステートメント を使用して、Integer.parseInt()から発生する可能性のある例外をキャプチャできます。
例:
try {
int i = Integer.parseint(stringToParse);
//parseInt succeded
} catch(Exception e)
{
//parseInt failed
}