0

複数の宿題値の偏差を見つける必要があります。これを行うには、変数の宿題を for ループに格納する必要があるため、実行するたびに自分自身を削除します。また、個別の宿題のスコア値を保存するために必要な変数の数は不明であるため、変数のリストを作成することはできません。私がする必要があるのは、配列のリストを作成することだと思いますが、それが正しいかどうかはわかりません。

ここに私が作成した配列を含むメソッドのコードがあります...

 public double computeHomeworkDeviation(int homework){
    int[] homeworkScore = new int[totalStudents];
    if(computeHomeworkDeviationCounter < totalStudents){
        homeworkScore[computeHomeworkDeviationCounter] = homework;
        computeHomeworkDeviationCounter++;
    }
    else{
        for(int k = 1; k <= totalStudents; k++){
            top += Math.pow(homeworkScore[totalStudents - k] -    homeworkAverage, 2);
        }
    homeworkDeviation = Math.sqrt(top / totalStudents); 
    }
    return homeworkDeviation;
}

このメソッドは for ループに呼び出され、配列リストに格納する必要がある宿題変数の引数を呼び出します。私が持っているものが機能していません。何が間違っていますか? (配列の値が保存されているとは思えません)

編集:私は今それを2つの方法に分けました。

setArray メソッド...

 public void setHomeworkArray(int homework){
    homeworkScore[l] = homework;
    l++;
}

computeHomeworkDeviationMethod...

 public double computeHomeworkDeviation(int homework){
        for(int k = 1; k <= totalStudents; k++){
            top += Math.pow(homeworkScore[totalStudents - k] -          homeworkAverage, 2);
        }
    homeworkDeviation = Math.sqrt(top / totalStudents); 
    return homeworkDeviation;
    }

まだ ArrayOutOfBoundsException エラーが発生しています。

4

1 に答える 1

1

あなたの勘は正しいです。値が適切に保存されていません。ifプログラムで何をしたいのか正確にはわかりませんが、配列に値を格納する代わりにループが必要だと思います:

while(computeHomeworkDeviationCounter < totalStudents){
    homeworkScore[computeHomeworkDeviationCounter] = homework;
    computeHomeworkDeviationCounter++;
}

elseこれは、ステートメントを削除する必要があることも意味します。computeHomeworkDeviationCounter最後に、このメソッドが複数回実行された場合のエラーを回避するために、メソッドが呼び出されたときに変数をリセットすることをお勧めします。

public double computeHomeworkDeviation(int homework){
int[] homeworkScore = new int[totalStudents];
computeHomeworkDeviationCounter = 0;

...または、他の場所で使用されていない場合は、メソッドローカル変数として使用することもできます:

public double computeHomeworkDeviation(int homework){
int[] homeworkScore = new int[totalStudents];
int computeHomeworkDeviationCounter = 0;

topまた、プログラムの残りの部分に適切な場合は、変数についても同様です。

于 2013-11-01T23:28:32.527 に答える