-5

3 つの成績 (3 つのテキスト ボックス) を合計しようとするコードを試しています。[計算] ボタンをクリックすると、3 つの値が合計されて 3 で除算されます (1 つの平均成績テキスト ボックス)。

私のエラーは、2 番目と 3 番目のテキスト ボックスが空であるかどうかを検証しているときに発生します。

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
    }

私は何が間違っているのか分かりません。

4

3 に答える 3

3

par2.getText(),par3.getText()空の場合、Integer.parseInt(par1.getText());スローしますNumberFormatException

したがって、intに変換する前に、それらが空ではなく、有効な数値であることを確認する必要があります

于 2013-05-17T17:59:03.877 に答える
0

使用する

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

負でない数値に対してのみ機能します。

于 2013-05-17T18:00:28.137 に答える
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 に変換し、後で検証するために文字列に戻すなど、2 回行います。だから私はこれを少し変更して、より短い方法を示しました(ただし、コードをチェックしていないので、まだ改善する必要があるかもしれません:-)

于 2013-05-17T18:03:08.657 に答える