如何在java中将10位数字文本解析为整数

时间:2014-03-06 12:39:28

标签: java

我已将"phone"设置为数据库中的10位数的int,并将输入作为我使用

解析的文本
String phone1=request.getParameter("phone");

int phone =Integer.parseInt(phone1);

但是为什么不起作用?

3 个答案:

答案 0 :(得分:4)

在Java中,您可以存储int变量编号,范围为-2147483648至2147483647.这对于您的10位数电话号码是不够的。您可以使用long轻松解决此问题:

long phone = Long.parseLong(phone1);

另一方面,我会重新考虑使用数字数据类型来存储电话号码。为什么呢?

  • 因为如果您的号码并不总是精确到10位数,则无法存储前导零。
  • 因为你松散了格式,比如“123-456 -...”
  • 因为您无法保存#p等有效且有时用于电话号码的内容

答案 1 :(得分:0)

如果您的手机格式类似(+ 3212-45-356)或其他。在解析它之前,你必须从那个'特殊字符'中清除该字符串。尝试解析它很长。

String phone1=request.getParameter("phone");

Long phone =Integer.parseLong(phone1.replace("\\+","").replace.("-",""));

答案 2 :(得分:-1)

一个问题是,前面的0将使数字八进制为8;然后数字8和9导致NumberFormatException。 Base 8允许表示3位0-1,其中一位数为0-7。

long phone = Long.parseLong(phone1, 10);

这迫使基地10。

当然,由于人们没有使用电话号码计算,并且通过此转换会丢失前面的零,这可能不太适合。在许多国家/地区,使用前面的+00输入国际号码。