我有一个包含一些方法的类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]);
}
}
}
答案 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