[英]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.