Java - 检查parseInt是否抛出异常

时间:2011-06-23 15:03:13

标签: java string jtextarea parseint

我想知道如果Integer.parseInt(无论如何)没有失败,该怎么办。

更具体地说,我有一个由换行符分隔的用户指定值的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))){}
 }

任何帮助表示感谢。

8 个答案:

答案 0 :(得分:50)

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

答案 1 :(得分:26)

检查它是否是整数可解析

public boolean isInteger(String string) {
    try {
        Integer.valueOf(string);
        return true;
    } catch (NumberFormatException e) {
        return false;
    }
}

或使用扫描仪

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();
    }
}

或使用正则表达式,如

private static Pattern doublePattern = Pattern.compile("-?\\d+(\\.\\d*)?");

public boolean isDouble(String string) {
    return doublePattern.matcher(string).matches();
}

答案 2 :(得分:11)

就是这样的。

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

答案 3 :(得分:9)

如果parseInt无法解析整数,则会抛出NumberFormatException。所以这样做会回答你的问题

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

答案 4 :(得分:8)

您可以使用扫描仪代替try-catch:

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

答案 5 :(得分:3)

而不是try&amp; catch表达式..最好在字符串上运行正则表达式以确保它是一个有效的数字..

答案 6 :(得分:2)

您可以使用java中的try..catch statement来捕获可能由Integer.parseInt()引起的异常。

示例:

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

答案 7 :(得分:2)

你可以尝试

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-