Java – 检查parseInt是否抛出exception

我想知道如果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))){} } 

任何帮助赞赏。

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

请记住,我将ParseException视为特定案例的正确exception类型

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

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

这将是这样的。

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

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

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

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

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

您可以在java中使用try..catch语句来捕获可能由Integer.parseInt()引起的exception。

例:

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

而不是trycatch表达式..它更好地在字符串上运行正则表达式,以确保它是一个有效的数字..

你可以试试

 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-