我的代码中出现此错误:java.lang.NumberFormatException
。
m1
用于包含整个表达式的主字符串s
是第二个号码,如果没有除分部以外的运营商f
是第一个号码,如果没有除分部以外的运营商f1
是第一个号码,如果除了分区以外的运营商也存在s1
是第二个号码,如果除了分区以外的运营商也存在以下是代码:
b12.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String s="";
String f="";
String f1="";
String s1="";
int z=m1.length();
int pos,pos1;
for(int i=0;i<z;i++)
{
int m=m1.codePointAt(i);
//Checking for division
if(m==47)
{
// Loop to calculate second number
for(int j=i+1;j<z;j++)
{
int d=m1.codePointAt(j);
if(d!=43||d!=45||d!=42||d!=47)
{
s+=m1;
}
else
{ pos=j;
s1+=m1.substring(pos,z);
break;
}
}
// Loop to calculate first number
for(int j=i-1;j>=0;j--)
{
int d=m1.codePointAt(j);
if(d!=43||d!=45||d!=42||d!=47)
{
f+=m1;
}
else
{ pos1=j;
f1+=m1.substring(0,pos1);
break;
}
}
String rev=new StringBuffer(f).reverse().toString();
float ans=Float.parseFloat(rev)/Float.parseFloat(s);
String e=Float.toString(ans);
if(f1==""&&s1=="")
{
m1=""+e;
}
else
{
m1=""+f1+e+s1;
}
z=m1.length();
e1.setText(m1);
}
}
}
});
}
答案 0 :(得分:0)
可能抛出NumberFormatException
的潜在代码:
float ans=Float.parseFloat(rev)/Float.parseFloat(s);
检查rev
和s
是否可以解析为有效的float
值。您还可以执行以下操作:
float ans=Float.parseFloat(rev.trim())/Float.parseFloat(s.trim());
将删除前导和尾随空格(如果有的话)。
如果可能,请将StringBuffer
替换为StringBuilder。