2013-05-17 61 views
-4

我嘗試了一個代碼,試圖總結3個等級,(3個文本框),並且當您單擊「計算」按鈕時,3個值會相加並分爲3,(1 avarage等級文本框)條件如果字符串爲空

我的錯誤來了,當我驗證如果第二和第三個文本框是空的,它應該只拿第一個文本框,並使avarage成績出來。

int p1,p2,p3,promedio; 

    p1=Integer.parseInt(par1.getText()); //getting the grade1 textbox info and parsing to int 
    p2=Integer.parseInt(par2.getText()); //same , grade2 
    p3=Integer.parseInt(par3.getText()); //same, grade3 
    promedio=((p1+p2+p3)/3); //summing and dividing to 3 
    String pp = String.valueOf(promedio); //parsing avarage grade to string 
    pro.setText(pp); //printing the avarage grade to his respective textbox 

    String pp1 = String.valueOf(p1); //parsing the 3 grades to strings, to i can validate later 
    String pp2 = String.valueOf(p2); 
    String pp3 = String.valueOf(p3); 

    if(pp2.isEmpty() && pp3.isEmpty()){ //if grade 2 and 3 are empty 
     pp = pp1; //avarage grade = p1 (grade 1) 
     pro.setText(pp); //printing avarage grade 
    } 

我不知道我做錯了。

+6

什麼錯誤?????? – NINCOMPOOP

+0

你試圖總結這3個變量中的哪一個? (另外,我沒有看到這裏的代碼示例中使用了任何文本框)。 –

+0

附註:爲什麼'promedio'是'int'而不是'double'?它不應該包含平均值嗎? – Maroun

回答

3

如果par2.getText(),par3.getText()是空的,然後Integer.parseInt(par1.getText());將拋出NumberFormatException

所以,你需要確保他們不是空的,是有效的數字轉換之前爲int

+0

*我的錯誤來了,當我驗證如果第二和第三個文本框是空的*,那可能是'if(pp2.isEmpty()&& pp3.isEmpty())'!!! – NINCOMPOOP

+1

Mr @NoobUnChained它只是需要心靈的存在..因爲可能他會在空的時候出錯。上面的行不會拋出任何錯誤AFAIK,因爲它是一個字符串,他檢查爲空 – Pragnani

+0

Sir @Pragnani,如果在所有的文本框都是空的,我認爲執行不會達到'if()';)這就是歐普說他得到「錯誤」的地方。 – NINCOMPOOP

0

使用

p3=Integer.parseInt("0" + par3.getText()); 

它只適用於非負數。

0

我會改變順序,改變邏輯一點點:

String pp1 = par1.getText(); 
      pp2=... 
      pp3=... 

    int num = 3; 
    if (pp3.isEmpty()) --num; 
    if (pp2.isEmpty()) --num; 
    // Add some logic for the case that pp1 is empty 

    p1 = ... 
    p2 = ....... 
    promedio = (p1 + p2 + p3)/num; 

    pro.setText(String.valueOf(promedio)); 

在代碼中,你做事的兩倍,像字符串轉換成int,然後再返回到字符串進行驗證後。所以我改變了這一點,以顯示更短的方式(我沒有檢查我的代碼,但是,所以也許你仍然需要改進它:-)