2012-08-26 52 views
0

我嘗試讀取屏幕上的文本,並將其更改將翻一番,它崩潰串翻番

public void equesionOperation(int signNum1) { 

     S_numInTV=TV_calcScreen.getText().toString(); 
     S_numUp=TV_calcUp.getText().toString(); 

     D_numIn=Double.parseDouble(S_numInTV); 
     D_numToCalc=Double.parseDouble(S_numUp); 

     switch (signNum1){ 
     case 1: D_sum=D_numIn+D_numToCalc;break; 
     case 2: D_sum=D_numIn-D_numToCalc;break; 
     case 3: D_sum=D_numIn*D_numToCalc;break; 
     case 4: D_sum=D_numToCalc/D_numIn;break; 
     case 5: D_sum=Math.pow(D_numToCalc, D_numIn);break; 
     default: break; 
     } 
     S_sum=(""+D_numToCalc+" "+D_numIn); 
    } 
+2

如果你詳細闡述*「it crash」* ...會引發異常嗎?哪個例外?什麼是投入? – assylias

+1

方面評論:你也應該閱讀[那篇關於匈牙利記法的文章](http://stackoverflow.com/questions/111933/why-shouldnt-i-use-hungarian-notation)。特別是 – assylias

+0

,請閱讀:http://www.joelonsoftware.com/articles/Wrong.html – sschrass

回答

0

這可能有助於找到事故的原因。更換由第三和第四代碼林斯:

try { 
    D_numIn=Double.parseDouble(S_numInTV); 
} catch (NumberFormatException nfe) { 
    System.out.printf("Attempted to parse a double, but found: '%s'%n", S_numInTV); 
} 
try { 
D_numToCalc=Double.parseDouble(S_numUp); 
} catch (NumberFormatException nfe) { 
    System.out.printf("Attempted to parse a double, but found: '%s'%n", S_numUp); 
} 
+0

它沒有幫助 – user1625612

+0

您的評論也沒有幫助。 –

0
S_numInTV=TV_calcScreen.getText().toString(); 
S_numUp=TV_calcUp.getText().toString(); 

這些字符串值是文字或數字?

String str1 = "100.476"; 
Double dObj2 = Double.valueOf(str1); 
System.out.println(dObj2); 

上面的代碼將不會發生任何異常,但

String str1 = "ss"; 
    Double dObj2 = Double.valueOf(str1); 
    System.out.println(dObj2); 

上面的代碼將出現numberfomatexception

所以將字符串轉換加倍,你必須確保其字符串輸入之前;

+0

上面的代碼只是數字 – user1625612