2013-07-13 31 views
-3

我在我的代碼中收到此錯誤:java.lang.NumberFormatException我的計算器應用程序出現錯誤(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

您認爲告訴我們錯誤是什麼可能有用嗎? – Simon

+0

java.lang.NumberFormatException .. –

+0

以及在哪條線上拋出此異常? – hardartcore

回答

0

潛在的代碼可以拋出NumberFormatException

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

檢查revs可以解析爲有效float值。你也可以做到以下幾點:

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

這將去除開頭和結尾的空格,如果有的話。

另外如果可能,用StringBuilder代替StringBuffer

+0

s在for循環中更新,我用它來查找第二個數字.. –

相關問題