我的计算器应用程序出错(java.lang.NumberFormatException)

时间:2013-07-13 14:33:43

标签: android

我的代码中出现此错误: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);
            }
        }


    }
});


}

1 个答案:

答案 0 :(得分:0)

可能抛出NumberFormatException的潜在代码:

float ans=Float.parseFloat(rev)/Float.parseFloat(s);

检查revs是否可以解析为有效的float值。您还可以执行以下操作:

float ans=Float.parseFloat(rev.trim())/Float.parseFloat(s.trim());

将删除前导和尾随空格(如果有的话)。

如果可能,请将StringBuffer替换为StringBuilder