当我遇到这个问题时,我正在研究我的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();
}
我使用的是eclipse Helios IDE,Android版本是2.2 api 8
答案 0 :(得分:7)
对于整数而言,它太大了,你需要很长的时间。
没有注意到它是一个电话号码 - 绝对将它存储为字符串。
至于验证,很多的人之前已经处理过这个问题。请参阅此处,例如:A comprehensive regex for phone number validation
答案 1 :(得分:5)
那是因为整数处理的值太大了。整数可以处理的最大值是2147483647,here。
您可以改为使用long
(Long.valueOf()
)。
答案 2 :(得分:1)
最大值整数是2 ^ 31-1 <1。 3 462 651 882,所以你必须使用长型。
答案 3 :(得分:1)
由于您获得Int
的价值更高
java.lang.NumberFormatException: For input string: "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();
}