-3

コードで次のエラーが発生します: java.lang.NumberFormatException

  • m1式全体を含むメイン文字列用です
  • s除算以外の演算子がない場合は、2 番目の数値です。
  • f除算以外の演算子がない場合は最初の数値
  • f1除算以外の演算子も存在する場合は最初の番号です
  • s1は、除算以外の演算子も存在する場合の 2 番目の数値です。

コードは次のとおりです。

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を確認します。また、次のこともできます。sfloat

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

これにより、先頭と末尾の空白があれば削除されます。

また、可能であれば、StringBuilderStringBufferに置き換えてください。

于 2013-07-13T14:40:39.283 に答える