簡體   English   中英

在數組的另一個類中調用getAverage方法

[英]Calling a getAverage method within another class, on an array

我有一個包含一些方法的類ArrayMin,ArrayMax,ArrayAvg和一個構造函數,該構造函數生成10個值的數組,其值在0到100之間。

我並沒有真正使用上面提到的三種方法。 如何調用方法並獲得平均值,最小值和最大值? 我以為在我的MAIN中創建Array a1 = new Array(10)之后就可以做a1.ArrayMax() ,但是不走運。

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]);

        }   
    }
}

您缺少OOP的許多基本原理,但是要專門解決您的問題,您在構造函數中創建的int數組與方法中使用的數組不同。

為了解決這個問題,在您的Array類中,您需要一個實例變量來保存此數組:

private int[] a;

現在,您已經在構造函數中有了此變量,而不是

int[] a = ...

你只是做

a = ...

要使該實例變量成為擁有10個隨機數的變量。 現在,您可以刪除每個方法中的參數,以使工作順利進行。

我會重構一下:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM