2012-05-28 52 views
2

代码:要求:双[]研究发现:无参数

ArrayList <Integer> marks = new ArrayList(); 

String output = "Class average:" + calculateAverage() + "\n" + "Maximum mark:" + 
calculateMaximum() + "\n" +"Minimum mark:" + calculateMinimum() + "\n" + "Range of 
marks:" + range; 

analyzeTextArea.setText(output); 

private double calculateAverage(double [] marks) { 
double sum = 0; 
for (int i=0; i< marks.length; i++) { 
sum += marks[i]; 
} 
return sum/marks.length; 
} 

不顾其他的事情串(最小,最大和范围)内,但对于此行,

String output = "Class average:" + calculateAverage() + "\n" + "Maximum mark:" + 
calculateMaximum() + "\n" +"Minimum mark:" + calculateMinimum() + "\n" + "Range of 
marks:" + range; 

我得到一个错误:

required: double []
found: no arguments

为什么我得到这个错误,我应该改变什么?

回答

7

您正在调用方法calculateAverage:calculateAverage(),没有任何参数。但该方法声明是这样的:

private double calculateAverage(double [] marks) 

因此,它需要double[]类型的一个参数,但不传递任何东西。

+0

这是一个名为标记的数组,因此我将其更改为calculateAverage(标记),但仍然得到相同的错误。 – user1419306

+1

不,现在你应该得到'reauired double []的错误:找到ArrayList'。 –

+0

是的,对不起,这是真的,所以现在有什么问题? – user1419306

3

看看这个:

String output = "Class average:" + calculateAverage() + ... 

那是什么意思来计算的平均值是多少?你必须提供一些平均数据的方法。 calculateMaximum,calculateMinimum等也是如此。没有任何语境,这些方法都无能为力。

您的实际商标在哪里存储?想必你有某种存储标记的变量 - 通过这个。例如:

String output = "Class average:" + calculateAverage(actualMarks) + ... 

...除了明显与真实变量,或任何你正在使用的存储标记。

+0

对不起,编辑了代码。 – user1419306

+0

这是一个名为标记的数组,所以我改变它就像你说的calculateAverage(标记),但我仍然得到相同的错误。 – user1419306

+0

@ user1419306:我怀疑你没有得到*同*错误 - 只是一个类似(上面给出的讨论)。仔细阅读错误信息非常重要*。 –

0

你可以这样调用它:

double d[] = {1, 2, 3}; 
double ret = calculateAverage(d); 
System.out.println(ret); 
1

私人双calculateAverage(双[]标记)是在方法声明,所以它叫时,它必须和双阵列

例如说法:

calculateAverage(double_value_array);