在数组的另一个类中调用getAverage方法

时间:2019-04-29 19:30:08

标签: java arrays class methods

我有一个包含一些方法的类ArrayMin,ArrayMax,ArrayAvg和一个构造函数,该构造函数生成10个值的数组,其值在0到100之间。

我并不打算实际使用上面提到的三种方法。如何调用方法并获得平均值,最小值和最大值?我以为我可以在自己的MAIN中创建a1.ArrayMax()之后执行Array a1 = new Array(10),但是没有运气。

import java.util.Random;

public class Array {

    public int size, avg;

    public int ArraySize() {
        return size;
    }

    public int ArrayMin(int a[]) {
        int min = a[0];
        for (int i=0; i<a.length;i++) {
            if (a[i] < min) {
                min = a[i];
            }
        }

        return min;
    }
    public int ArrayMax(int a[]) {

        int max = a[0];
        for (int i=0; i<a.length;i++) {
            if (a[i] > max) {
                max = a[i];
            }
        }

        return max;
    }

    public int ArrayAvg(int a[]) {

      int sum = 0; 
      for (int i = 0; i < a.length; i++) {
          sum += a[i]; 
      }
      avg = sum / a.length; 
      return avg;
    }

    public Array(int size) {

        Random rand = new Random();
        int min = 0, max = 100;
        int[] a = new int[size];
        for (int i=0; i<a.length; i++) {
            int result = rand.nextInt(max-min) + min;
            a[i] = result;
            System.out.println(a[i]);

        }   
    }
}

2 个答案:

答案 0 :(得分:2)

您缺少OOP的许多基本原理,但是要专门解决您的问题,您在构造函数中创建的int数组与方法中使用的数组不同。

要解决此问题,在Array类中,您需要一个实例变量来保存此数组:

private int[] a;

现在您在构造函数中有了此变量,而不是这样做

int[] a = ...

您只需

a = ...

要使该实例变量成为拥有10个随机数的变量。现在,您可以删除每种方法中的参数,以使工作顺利进行。

答案 1 :(得分:2)

我会重构一下:

class Array {

    public static int arrayMin(int a[]) {
        int min = a[0];
        for (int i = 0; i < a.length; i++) {
            if (a[i] < min) {
                min = a[i];
            }
        }

        return min;
    }

    public static int arrayMax(int a[]) {

        int max = a[0];
        for (int i = 0; i < a.length; i++) {
            if (a[i] > max) {
                max = a[i];
            }
        }

        return max;
    }

    public static int arrayAvg(int a[]) {

        int sum = 0;
        for (int i = 0; i < a.length; i++) {
            sum += a[i];
        }
        return sum / a.length;
    }
}

和:

public static void main(String[] args) throws InterruptedException {

        Random rand = new Random();
        int size = 10;
        int min = 0, max = 100;
        int[] a = new int[size];
        for (int i = 0; i < a.length; i++) {
            int result = rand.nextInt(max - min) + min;
            a[i] = result;
        }

        System.out.println("Array: " + Arrays.toString(a));
        System.out.println("Max: " + Array.arrayMax(a));
        System.out.println("Min: " + Array.arrayMin(a));
        System.out.println("Avg: " + Array.arrayAvg(a));
    }

输出:

Array: [96, 56, 21, 59, 85, 31, 84, 83, 23, 80]
Max: 96
Min: 21
Avg: 61