0

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

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

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

3 回答 3

2

int 中不能有任何字符或符号,并且 int 的最大大小为 2,147,483,647,这意味着电话号码 555 555 5555 太大而无法存储在 int 中。

将解析更改为长,它应该可以解决您的问题

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

于 2013-01-29T20:39:52.413 回答
1

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

9835008199高于 MAXINT,所以大概就是这样。

文档告诉我:

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

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

于 2013-01-29T20:36:17.423 回答
0

使用 isNumber 函数来检查它是否是一个有效的数字。

于 2013-01-29T20:43:30.283 回答