我想知道二维数组中的平均值计算是否与一维数组相同?我还能看到它的java代码吗?这就是我所拥有的,但我没有得到正确的答案。
static int avgRecursion(int a[][], int i, int j, int f) {
// Last element
if (i == f - 1)
return a[i][j];
// When index is 0, divide sum computed so far by n.
if (i == 0)
return ((a[i][j] + avgRecursion(a, i + 1, j, f)) / f);
// Compute sum
return (a[i][j] + avgRecursion(a, i + 1, j, f));
}
static int[][] array;
static {
array = new int[3][4];
System.out.println("Enter 12 numbers: ");
Scanner scan = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
array[i][j] = scan.nextInt();
}
}
int f = array.length;
int average = avgRecursion(array, 0, 0, f);
System.out.println("The average of the 2D array: " + average);
}
答案 0 :(得分:3)
我猜您想找到存储在二维数组中的所有值的平均值。这是一个小程序:
public static void main(String[] args) {
int[][] arr = new int[4][5];
int sum = 0;
// Length * Breadth gives total number of elements in array
int arrLength = (arr.length * arr[0].length);
// Populate array
// Your program gets the values from the user
// but i'm hardcoding them. Hope you get the point
for (int row = 0; row < arr.length; row++) {
for (int col = 0; col < arr[row].length; col++) {
arr[row][col] = 20;
}
}
// Actual answer starts here
// Calculate sum of all values stored in the array
for (int row = 0; row < arr.length; row++) {
for (int col = 0; col < arr[row].length; col++) {
sum += arr[row][col];
}
}
// Print total sum / length of array
System.out.print("The average of the 2D array is " + sum / arrLength);
}
答案 1 :(得分:1)
您可以像往常一样将二维数组展平为一维并取一维数组的平均值:
int[][] arr = {{1, 2, 3, 4, 5}, {6, 7, 8}, {9}};
double avg = Arrays.stream(arr)
.flatMapToInt(Arrays::stream)
.average()
.orElse(Double.NaN);
System.out.println(avg); // 5.0