Java:调用写出数组参数的静态方法时出错



我正在使用BlueJay,我写了这一些简单的代码。该方法计算数组半数的平均值并返回较大的整数。它返回了我调用该方法的方式的错误。想不通为什么。提前谢谢你。

public class WritingArrays{
 public static void main(String[] args){
    System.out.println(scoresAverage([2,2,4,4]);
    System.out.println(scoresAverage([4,4,4,2,2,2]);
    System.out.println(scoresAverage([3,4,5,1,2,3]);
public static int scoresAverage(int[] a1){
    return Math.max(average(a1, 0, a1.length/2), average(a1, a1.length/2, a1.length));
}
public static int average(int[] scores, int start, int end){
    int sum = 0;
    for (int i = start-1; i < end; i++){
        sum += scores[i];
    }
    return sum/(end-start);
}

这是因为您实际上并没有创建要通过参数传递的数组。此外,您似乎缺少数据类型。没有这个,java 不知道你是否在传入,例如,一个整数数组(你正在尝试这样做(,一个双精度数组,或者一个字节数组,仅举几例。您应该考虑的是,在传入之前创建一个数组:

int[] temp = {2, 2, 4, 4 };
System.out.println(scoresAverage(temp));

或者,就像我说的,创建它并同时传递它。

System.out.println(scoresAverage(new int {2, 2, 4, 4}));

请务必注意,在参数中使用了大括号,就像创建新变量一样。

希望我有帮助!

首先,我相信您需要修复 sysout 语句的格式,使其看起来更像这样:

System.out.println(scoresAverage(new int[]{2, 2, 4, 4}));

接下来,尝试从平均方法返回双精度值。所以它看起来更像这样:

public static double average(int[] scores, int start, int end){
    double sum = 0;
    for (int i = start; i <= end; i++){
        sum += scores[i];
    }
    return sum/(end-start);
}

如果你真的需要一个整数打印输出,你也可以将值转换为 int:

System.out.println((int)(scoresAverage(new int[]{2, 2, 4, 4})));

最新更新