2013-05-17 59 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,然后再返回到字符串进行验证后。所以我改变了这一点,以显示更短的方式(我没有检查我的代码,但是,所以也许你仍然需要改进它:-)