3

此代码必须验证 findActions() 方法的输入数据:

try {
    System.out.println(findActions(lookingArea.substring(0, right)));// always printing valid number string
    Integer.parseInt(findActions(lookingArea.substring(0, right)));// checking for number format
}
catch(NumberFormatException exc) {
    System.out.println(exc);
}

但我总是java.lang.NumberFormatException: For input string: "*number*" 觉得这很奇怪,因为检查System.out.println(findActions(lookingArea.substring(0, right)));

我得到*number*像 10.0

4

3 回答 3

9

Integer.parseInt没想到.角色。如果您确定可以将其转换为int,请执行以下操作之一:

  1. ".0"在解析之前消除字符串的末尾,或者
  2. 调用Double.parseDouble,并将结果转换为int.

引用上面链接的 Javadocs:

字符串中的字符必须都是十进制数字,除了第一个字符可以是ASCII减号'-'('\u002D')表示负值或ASCII加号'+'('\u002B')表示正值。

于 2013-10-10T18:26:19.683 回答
3

10.0不是整数。相反,您可以使用:

int num = (int) Double.parseDouble(...);
于 2013-10-10T18:26:55.790 回答
1

原因之一可能是您的字符串太长而无法转换为 Integer 类型,因此您可以根据提供的输入将其声明为 Long 或 Double。

Long l = Long.parseLong(str);
于 2020-10-14T14:48:29.147 回答