java.lang.NumberFormatException:无法将字符串解析为整数
当我遇到这个问题时,我正在做我的android项目 我想把像“0345303709”7这样的字符串转换成整数,但我一直得到NumberFormatException 我在这里搜索了所有的问题,但没有找到解决问题的方法 下面是我的Android代码: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
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”);这个。。。