2016-06-01 119 views
0

这是我html代码NumberFormatException的输入字符串999999999

<div class="form-group col-md-6"> 
    <input type="text" class="form-control" name="phonenumber" placeholder="Enter Phone Number"> 
</div> 

这是我的NumberFormatException for input string '9999999999'

如何解决呢controller

int phonenumber=Integer.parseInt(request.getParameter("phonenumber").trim()); 

我流汗错误。

即使它是一个数字,为​​什么我不能解析它?

回答

0

Java中的int的范围是-2,147,483,6482,147,483,647

9,999,999,999超出范围,这是什么导致异常。

2

9999999999是外用于int数据类型(-2 至2 -1,含)的值的有效范围内,如由Integer.MIN_VALUEInteger.MAX_VALUE常数指定。

您不能在int中表示完整的电话号码,则必须省略前缀和区号(0000000 - 9999999)。否则,请改为使用long(-2 至2 -1(含)),Long.parseLong()将愉快地处理9999999999。在甲骨文DOC

0

检查parseInt函数()方法 parseInt

它清楚地说

NumberFormatException类型的异常,如果发生以下任一情况下被抛出:

第一参数为null或是长度为零的字符串。基数为 ,它小于Character.MIN_RADIX或大于 Character.MAX_RADIX。

字符串的任何字符不是指定基数的数字,所不同的是第一个字符可以是减号 “ - ”(“\ u002D”)为或 加号“+”(“\ u002B” ),条件是字符串长度大于 长度1.字符串表示的值不是类型为 int的值。

例子:

parseInt("0", 10) returns 0 
parseInt("473", 10) returns 473 
parseInt("+42", 10) returns 42 
parseInt("-0", 10) returns 0 
parseInt("-FF", 16) returns -255 
parseInt("1100110", 2) returns 102 
parseInt("2147483647", 10) returns 2147483647 
parseInt("-2147483648", 10) returns -2147483648 
parseInt("2147483648", 10) throws a NumberFormatException 
parseInt("99", 8) throws a NumberFormatException 
parseInt("Kona", 10) throws a NumberFormatException 
parseInt("Kona", 27) returns 411787 
1

Exception,因为你正试图转换 '9999999999' 成整数,并int型的最大射程为2147483647

因此,如果您坚持将电话号码从String转换为数字,请尝试Long.parseLong("9999999999")。将电话号码存储和操作为intlong将导致未来的一些不一致。

如果您要这样做来检查所有输入字符是否都是数字,您可以使用其他方式,如使用正则表达式。这种方式是非常有帮助的,因为你可以检查格式,分离器等从MKyoung网站看到这个示例:

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class ValidatePhoneNumber { 
    public static void main(String[] argv) { 

     String sPhoneNumber = "605-8889999"; 
     //String sPhoneNumber = "605-88899991"; 
     //String sPhoneNumber = "605-888999A"; 

     Pattern pattern = Pattern.compile("\\d{3}-\\d{7}"); 
     Matcher matcher = pattern.matcher(sPhoneNumber); 

     if (matcher.matches()) { 
      System.out.println("Phone Number Valid"); 
     } 
     else 
     { 
      System.out.println("Phone Number must be in the form XXX-XXXXXXX"); 
     } 
} 
} 

而另一种简单的方法是有哪些检查电话号码的所有数字是真的数字的方法:

public boolean isAllCharactersDigit(String phoneNumber){ 
    for(char c: phoneNumber.toCharArray()){ 
     if(!Character.isDigit(c)) 
      return false; 
    } 
    return true; 
} 

祝你好运。

相关问题