Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.NumberFormatException:无法将字符串解析为整数_Java_Android_Exception Handling_Type Conversion - Fatal编程技术网

java.lang.NumberFormatException:无法将字符串解析为整数

java.lang.NumberFormatException:无法将字符串解析为整数,java,android,exception-handling,type-conversion,Java,Android,Exception Handling,Type Conversion,当我遇到这个问题时,我正在做我的android项目 我想把像“0345303709”7这样的字符串转换成整数,但我一直得到NumberFormatException 我在这里搜索了所有的问题,但没有找到解决问题的方法 下面是我的Android代码: String edit_cell=cellnumber.getText().toString(); try { if(cellnumber.getText().length()==11 &am

当我遇到这个问题时,我正在做我的android项目

我想把像“0345303709”7这样的字符串转换成整数,但我一直得到NumberFormatException

我在这里搜索了所有的问题,但没有找到解决问题的方法

下面是我的Android代码:

 String edit_cell=cellnumber.getText().toString();
        try
        {
            if(cellnumber.getText().length()==11 && TextUtils.isEmpty(edit_cell)!=true && edit_cell!=null)
            {

                cell=Integer.valueOf("03462651882");
            }
            else
            {                   
                Toast.makeText(this, "Invalid CellNumber\n Write CellNumber like this Format:\nNetworkCode Followed by your Number\n",Toast.LENGTH_LONG).show();
                Toast.makeText(this, "eg:03213213214",Toast.LENGTH_LONG).show();    
            }
        }

        catch(Exception ex)
        {
            Toast.makeText(this, "Invalid cellnumber\n Write cellNumber line this format:\n Network code followed by your number\n",Toast.LENGTH_LONG).show();
            Toast.makeText(this, "eg:03213213214",Toast.LENGTH_LONG).show();    
        }      

我使用的是EclipseHeliosIDE,android版本是2.2API8,对于一个整数来说太大了,你需要一个长的

编辑 没有注意到它是一个电话号码-一定要将它存储为字符串


至于验证,很多人以前都处理过这个问题。请参见此处,例如:

这是因为该值对于整数来说太大而无法处理。整数可以处理的最大值为2147483647


您可以使用
long
long.valueOf()
)代替。

整数的最大值是2^31-1<3 462 651 882,因此必须使用long类型。

因为
Int
的值较高

java.lang.NumberFormatException:对于输入字符串:“03453037097”

只需将int值替换为long,如下所示

String edit_cell=cellnumber.getText().toString();
    try
    {
        if(cellnumber.getText().length()==11 && TextUtils.isEmpty(edit_cell)!=true && edit_cell!=null)
        {

            cell=Long.parseLong("03462651882");//=====> Change is here
        }
        else
        {                   
            Toast.makeText(this, "Invalid CellNumber\n Write CellNumber like this Format:\nNetworkCode Followed by your Number\n",Toast.LENGTH_LONG).show();
            Toast.makeText(this, "eg:03213213214",Toast.LENGTH_LONG).show();    
        }
    }

    catch(Exception ex)
    {
        Toast.makeText(this, "Invalid cellnumber\n Write cellNumber line this format:\n Network code followed by your number\n",Toast.LENGTH_LONG).show();
        Toast.makeText(this, "eg:03213213214",Toast.LENGTH_LONG).show();    
    }     

@Dmitri你能告诉我整数值的最大限制吗?我来自c#他们的我们有int32,int64,所以我从来没有遇到过这个问题。
integer.max_Value==2147483647
-这是一个常规的有符号32位整数。电话号码不是数字。您应该将它们存储为字符串。@Slaks我正在验证登录的数字。如果用户刚刚输入的是十进制数字而不是cellNumber,则应用程序将崩溃,因此我这样做是为了验证。还是一个坏主意,您应该使用正则表达式来验证。当应用程序强制设置电话号码的格式时,这也很烦人——只需让用户随意输入,去掉所有非数字字符,并验证长度/前缀/其他任何字符。try cell=Integer.ParseInteger(“03462651882”);而不是单元格=Integer.valueOf(“03462651882”);这个。。。