7

私はJavaの割り当てに取り組もうとしています。これはそれが尋ねるものです:

という名前のクラスを書きTestScoresます。クラス コンストラクターは、テスト スコアの配列を引数として受け入れる必要があります。クラスには、テスト スコアの平均を返すメソッドが必要です。配列内のテスト スコアが負または 100 より大きい場合、クラスはIllegalArgumentException. デモンストレーションします。TestScoresとという名前のファイルが必要ですTestScoresDemo

これは私がこれまでに持っているものです。私はそれのいくつかが間違っていることを知っており、それを修正する助けが必要です:

class TestScores {
    public static void checkscore(int s) {
        if (s<0) throw new IllegalArgumentException("Error: score is negative.");
        else if (s>100) throw new IllegalArgumentException("Error Score is higher then 100");
        else if (s>89)throw new IllegalArgumentException("Your grade is an A");
        else if (s>79 && s<90)throw new IllegalArgumentException("Your grade is an B");
        else if (s>69 && s<80)throw new IllegalArgumentException("Your grade is an C");
        else if (s>59 && s<70)throw new IllegalArgumentException("Your grade is an D");
        else if (s<60)throw new IllegalArgumentException("Your grade is an F");

        {
            int sum = 0; //all elements together
            for (int i = 0; i < a.length; i++)
                sum += a[i];
        }
        return sum / a.length;
    }
}

class TestScoresDemo {
    public static void main(String[] args) {
        int score = 0;
        Scanner scanner = new Scanner(System.in);
        System.out.print(" Enter a Grade number: ");
        String input = scanner.nextLine();
        score = Integer.parseInt(input);
        TestScores.checkscore(score);
        System.out.print("Test score average is" + sum);
    }
}

tryの本ではそれがIllegalArgumentException. 誰でも私を助けることができますか?IDEとしてEclipseを使用しています。

4

3 に答える 3

4

クラスTestScoresには、スコアの配列を受け入れるコンストラクターと、スコアの平均を返すメソッドの 2 つのメンバーが必要です。IllegalArgumentExceptionテストスコアが範囲外の場合にこれらのどれがスローされるかについて、割り当ては完全には明確ではありませんが、コンストラクターにします (それが引数を持っているため)。

public class TestScores {
    public TestScores(int[] scores) throws IllegalArgumentException {
        // test the scores for validity and throw an exception if appropriate
        // otherwise stash the scores in a field for later use
    }

    public float getAverageScore() {
        // compute the average score and return it
    }
}

あなたはTestScoresDemoクラスで正しい軌道に乗っています。最初に一連のスコアを配列に収集する必要があります。次に、オブジェクトを構築する必要がありTestScoresます。これは、例外をスローする可能性があるため、 try/ブロック内にある必要があります。catch次に、結果を呼び出しgetAverageScore()て何かをするだけです。

于 2012-04-27T03:11:25.177 に答える
0

例外とは、アプリケーションの通常の流れではうまくいかなかった何かを定義するために使用されるものです。メソッド checkScore が呼び出され、範囲外 (0 ~ 100) の引数が見つかった場合は、IllegalArgumentException をスローする必要があります。

クラスには次の構造が必要です。

public class TestScore {

    private int scores[]; //With setters and getters.

    public TestScore(int scores[]) {
        //Here, you set the scores array to the one on this class.
    }

    public int getAverage() {
        //You do the average here, and since you need to iterate over the 
        //array to sum each value, you can check the value and if it's not
        //ok you throw the IllegalArgumentException. No throws keyword
        //required since this kind of exception (like NullPointerException
        //and many others) are unchecked exceptions, meaning they can be 
        //thrown by a method and it does not need to specify them.
    }

}

テスト クラスは、コンストラクターのパラメーターとして int 配列を使用して TestScore オブジェクトを作成する必要があります。次に、getAverage メソッドを呼び出す必要があるため、try-catch ステートメントを含む testAverageScore メソッドを作成します。

それが役立つことを願っています。幸運を!。

編集: IllegalArgumentException は未チェックの例外です。

于 2012-04-27T03:23:35.883 に答える
-1
public class TestScores {
private final int[] scores;

public TestScores(int[] scores) {
    this.scores = scores;
}

public int getAverage() {
    int sum = 0;

    if(scores.length == 0) {
        return 0;
    }

    for(int score: scores) {
        if(score < 0 || score > 100) {
            throw new IllegalArgumentException("Score is not valid!");
        }
        sum += score;
    }
    return sum/scores.length;
}

}

于 2012-04-27T03:12:13.630 に答える