web-dev-qa-db-ja.com

Java-parseIntが例外をスローするかどうかを確認する

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))){}
 }

任意の助けに感謝します。

31
Mike Haye
public static boolean isParsable(String input){
    try{
        Integer.parseInt(input);
        return true;
    }catch(ParseException e){
        return false;
    }
}
51
fmucar

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();
}
26
Kerem Baydoğan

それはこのようなものでしょう。

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
    }
}
11
Stefan Bossbaly

parseIntは、整数を解析できない場合、 NumberFormatException をスローします。これを行うと、あなたの質問に答えます

try{
Integer.parseInt(....)
}catch(NumberFormatException e){
//couldn't parse
}
9
Amir Raminfar

Try-catchの代わりにスキャナーを使用できます。

Scanner scanner = new Scanner(line).useDelimiter("\n");
if(scanner.hasNextInt()){
    System.out.println("yes, it's an int");
}
8
dogbane

trying&catching式の代わりに、文字列に対して正規表現を実行して、有効な数値であることを確認することをお勧めします。

3
Anantha Sharma

試すことができます

NumberUtils.isParsable(yourInput)

org/Apache/commons/lang3/math/NumberUtilsの一部であり、Integer.parseInt(String)Long.parseLong(String)Float.parseFloat(String)、またはDouble.parseDouble(String)で文字列を解析できるかどうかをチェックします。

下記参照:

https://commons.Apache.org/proper/commons-lang/apidocs/org/Apache/commons/lang3/math/NumberUtils.html#isParsable-Java.lang.String-

2

Javaで try..catchステートメント を使用して、Integer.parseInt()から発生する可能性のある例外をキャプチャできます。

例:

try {
  int i = Integer.parseint(stringToParse);
  //parseInt succeded
} catch(Exception e)
{
   //parseInt failed
}
2