在数组中存储变量?

时间:2013-11-01 23:22:30

标签: java arrays class

我需要找到多个家庭作业价值的偏差。为了做到这一点,我需要存储一个变量作业,即在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循环并调用需要存储在数组列表中的homework变量的参数。我有什么不工作,我做错了什么? (我不相信甚至存储数组值)

编辑: 我现在把它分成两种方法。

... setArrayMethod

 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错误。

1 个答案:

答案 0 :(得分: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,如果适用于你的其他程序。