Java - 检查parseInt是否抛出异常

Mik*_*aye 31 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))){}
 }
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏.

fmu*_*car 50

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

  • NumberFormatException异常.你也可以做对.记录在案. (14认同)
  • 不要捕获所有异常.这真是糟糕的做法. (9认同)

Ker*_*ğan 27

检查它是否是整数可解析的

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

或使用扫描仪

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

或使用正则表达式

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

public boolean isDouble(String string) {
    return doublePattern.matcher(string).matches();
}
Run Code Online (Sandbox Code Playgroud)

  • +1使用扫描仪进行验证,无例外. (3认同)

Ste*_*aly 12

这将是这样的.

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
    }
}
Run Code Online (Sandbox Code Playgroud)


Ami*_*far 9

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

try{
Integer.parseInt(....)
}catch(NumberFormatException e){
//couldn't parse
}
Run Code Online (Sandbox Code Playgroud)

  • 这应该是正确的答案,因为公认的答案是错误的。 (2认同)

dog*_*ane 8

您可以使用扫描仪而不是try-catch:

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