-3

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


    }
});


}
4

1 回答 1

0

可能抛出的潜在代码NumberFormatException

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

检查是否rev并且s可以解析为有效值float。您还可以执行以下操作:

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

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

此外,如果可能,请替换StringBufferStringBuilder

于 2013-07-13T14:40:39.283 回答