在servlet中从字符串转换为整数时的NumberFormatException

时间:2013-01-29 20:34:57

标签: numberformatexception

我知道这是一个常见的问题。我已阅读解决方案并修改了代码,然后我也没有得到解决方案,所以我在这里发布了我的代码。

当我从文本框中读取一个值并将值从servlet中的String解析为int时,为什么它会显示NumberFormatException?

  String ph=request.getParameter("phone");
  int phone=Integer.parseInt(ph.trim());// exception is generated here

3 个答案:

答案 0 :(得分:2)

int中不能包含任何字符或符号,int的最大大小为2,147,483,647,这意味着电话号码555 555 5555将大到存储在int中。

将解析更改为长并且应该解决您的问题

遵循的一条好规则是不要在数字基元中存储任何数字,如SSN或电话号码。您希望将数值基元保留为计划进行数学相关的值。如果可能,请将它们保留为字符串。

答案 1 :(得分:1)

因为您输入的值不是有效整数。确保其中没有奇怪的字符。

9835008199高于MAXINT,所以这是可能的。

docs告诉我:

  

抛出NumberFormatException - 如果字符串不包含可解析的整数。

另一方面:不将电话号码存储为整数。你会遇到麻烦(事实上你已经有了)。经验法则:如果你不想用数字做数学,那么它不是int,而是string

答案 2 :(得分:0)

使用isNumber函数检查它是否是有效数字。