2013-11-01 96 views
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种方法。

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

'我有什么不工作,'不工作在哪个意义上。错误?错误的输出?什么 – Prateek

+0

我得到了家庭作业偏差的错误值,我相信它与将作业值存储在数组中有关。 –

+0

move'int [] homeworkScore = new int [totalStudents];'函数外部 –

回答

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; 

27:11变量top:其他任何地方使用。

+0

我编辑了我的提交...并且,这些值不需要在代码中重置。 –