从方法中返回数组

时间:2013-11-17 16:37:19

标签: arrays netbeans methods return

所以我必须显示低于平均水平的标记,以及高于平均水平的所有标记。

我不知道下一步该怎么做但是到目前为止我的目标是:

public static void main (String[]args) {
    int[]marks={50,60,30,90,70,40,80,44};
    int average=average(marks);
    int[]resultBelowAverage=getBelowAverage(marks,average);
    printIntArray(resultBelowAverage);
    int[]resultAverageandAbove=getAverageandAbove(marks,average);
    printIntArray(resultAverageandAbove);
}

下一个方法用于计算平均值。我得到了这个58的正确答案。

public static int average(int[] marks) {
    int i=0;
    int total=0;
    for(i=0;i<marks.length;i++){
        total=total+marks[i];
    }
    int average=total/i;
    return average;
}

下一个方法可以获得数组中低于平均值的值。

public static int countBelowAverage (int[] numbers,int av){
    int size=0;
    for(int i=0;i<numbers.length;i++) {
        if (numbers[i]<av) {
            size=size+1; 
        }
    }

    return size;
}

下一个方法获取数组中的平均值。

public static int countAboveAverage (int[] numbers,int av) {
    int size=0;
    for(int i=0;i>=numbers.length;i++) {
        if (numbers[i]>=av) {
            size=size+1; 
        }   
    }

    return size;
}

下一个方法获取数组中的哪些值低于平均值。我想这就是我出错的地方。

public static int[] getBelowAverage(int[]numbers,int av) {
    int size=countBelowAverage(numbers,av);
    int[]belowAverage=new int[size];

    return belowAverage;
}

下一个方法获取数组中的哪些值高于平均值。

public static int[] getAverageandAbove(int[] numbers,int av) {
    int size=countAboveAverage(numbers,av);
    int[]AboveAverage=new int[size];

    return AboveAverage;
}

最后一种方法打印分类为低于平均值且高于平均值的数组。

public static void printIntArray(int[]x) {
    for(int i=0;i<x.length;i++){
        System.out.println (x[i]);
    }
}

3 个答案:

答案 0 :(得分:0)

在您的方法中,您只需创建适当大小的数组,空数组并返回它们。在返回

之前,您应该为这些数组添加一些低于/高于平均值的标记

喜欢这里:

int[]belowAverage=new int[size];
//you have an empty array just after creation with nothing inside
//enter here marks from the marks array that are below average
return belowAverage;

这里的情况完全相同:

int[]AboveAverage=new int[size];
//you have an empty array just after creation with nothing inside
//enter here marks from the marks array that are above average
return AboveAverage;

您可以使用peeskillet的solution算法来执行此操作。

答案 1 :(得分:0)

尝试这样的方法来获得低于平均值的数组

public static int[] getBelowAverage(int[]numbers,int av){
    int size=countBelowAverage(numbers,av);
    int[]belowAverage=new int[size];

    int j = 0;
    for (int i = 0; i < numbers.length; i++){
        if (numbers[i] < av){
            belowAverage[j] = numbers[i];
            j++;
        }
    }

    return belowAverage;
}

对上述平均方法做类似的

答案 2 :(得分:0)

在你的方法getAverageandAbove你创建一个数组,但你不在其中放任何东西。 你应该再次循环遍历数字数组,并使用大于平均值的值填充你的AboveAverage数组。