请耐心等待我对此我很陌生。我正在阅读一些教程,我收到此错误
GradeAnalyzer.java:51: error: illegal start of expression
myAnalyzer.getAverage(ArrayList<Integer>);
我发现有这么多主题说把主要的方法拿出来,但除非我真的很傻,否则我很确定我已经在主力之外了。欢迎所有关于此事的建议(也可以随意批评我的其余代码)。 import java.util.ArrayList;
public class GradeAnalyzer {
public GradeAnalyzer() {
}
public int getAverage(ArrayList<Integer> grades) {
;
if (grades.size() < 1) {
System.out.println("Unfortunately the Array you are using is empty");
return 0;
} else {
int sum = 0;
for (Integer grade: grades) {
System.out.println(grade);
sum = sum + grade;
}
int average = sum / grades.size();
System.out.println("Average =" + average);
return average;
}
}
public static void main(String[] args) {
ArrayList<Integer> myClassroom = new ArrayList<Integer>();
myClassroom.add(98);
myClassroom.add(92);
myClassroom.add(88);
myClassroom.add(75);
myClassroom.add(61);
myClassroom.add(89);
myClassroom.add(95);
}
public int myAnalyzer(ArrayList<Integer> myClassroom) {
GradeAnalyzer myAnalyzer = new GradeAnalyzer();
myAnalyzer.getAverage(ArrayList<Integer>);
}
}
答案 0 :(得分:3)
这是罪魁祸首:
myAnalyzer.getAverage(ArrayList<Integer>);
您提供了类型,其中需要表达式。您可能想要传递myClassroom
参数:
myAnalyzer.getAverage(myClassroom);
其他说明:
你可能也希望摆脱;
顶部的迷路getAverage
。我不认为这是一个语法错误,但它没有意义。
我在任何地方都没有看到致电到myAnalyzer
(方法)。
myAnalyzer
是一个非常奇怪的方法名称。
最好不要在具有相同名称(myAnalyzer
)的方法中声明局部变量(myAnalyzer
)(尽管它有效)。
通常,尝试将变量类型保留到接口而不是具体类型,因此:
List<Integer> myClassroom = new ArrayList<Integer>();
...而不是在变量声明中使用ArrayList<Integer>
。
如果使用ArrayList
(毕竟分配并维护一个数组),尽可能告诉它使用的初始容量,这样可以确保不进行不必要的数组重新分配当你添加东西时。
sum += grade;
是写sum = sum + grade;
的惯用方法(尽管后者有效)。
答案 1 :(得分:2)
myAnalyzer.getAverage(ArrayList<Integer>);
不是有效的方法调用。您应该传递类型为ArrayList<Integer>
的实例。
例如,如果您从main
调用它,则可以写:
myAnalyzer.getAverage(myClassroom);
或者,如果您不想将此方法放在main
中,请将myClassroom
ArrayList
声明和初始化移至myAnalyzer
方法。