2016-11-20 3 views
-4

мне нужна помощь со следующей программой:Как найти среднее значение элементов в массиве 2d JAVA?

«написать метод, который будет принимать двумерный массив двойников в качестве входного параметра & возвращает среднее значение элементов массива.»

Может ли кто-нибудь сказать мне, как это сделать?

Мой текущий код:

public static double average(float arr[][]) { 
double sum = 0; 
int count = 0; 
for (int row = 0; row < arr.length; row++) 
for (int col = 0; col < arr[0].length; col++) 
{ 
sum += arr[row][col]; 
count++; 
} 
return sum/count; 
} 

Я не знаю, как дать вводимые пользователем данные элементы массива и размерность массива (строки/столбцы). Также как я могу назвать этот метод из основного? Я получаю ошибки.

+0

Возможный дубликат: http://stackoverflow.com/q/2622725/5743988 – 4castle

+0

Конечно это компиляция? – brummfondel

+0

Я только что видел редактирование .. Я думаю, что это дубликат [this] (http://stackoverflow.com/questions/19243429/java-input-scanner-to-array-multidimensional) – user6904265

ответ

1

попробовать это:

Код:

public class AverageElements { 
    private static double[][] array; 

    public static void main (String[] args){ 

     // Initialize array 
     initializeArray(); 

     // Calculate average 
     System.out.println(getAverage()); 
    } 

    private static void initializeArray(){ 
     array = new double[5][2]; 
     array[0][0]=1.1; 
     array[0][1]=12.3; 
     array[1][0]=3.4; 
     array[1][1]=5.8; 
     array[2][0]=9.8; 
     array[2][1]=5.7; 
     array[3][0]=4.6; 
     array[3][1]=7.45698; 
     array[4][0]=1.22; 
     array[4][1]=3.1478; 
    } 

    private static double getAverage(){ 
     int counter=0; 
     double sum = 0; 
     for(int i=0;i<array.length;i++){ 
      for(int j=0;j<array[i].length;j++){ 
       sum = sum+array[i][j]; 
       counter++; 
      } 
     } 

     return sum/counter; 
    } 
} 

Выход:

5.452478000000001 
-1

Поскольку вы так хорошо попросили! Вот код:

public double Averagearray(double[][] array) { 
    double total=0; 
    int totallength; 
    for(int i=0;i<array.length;i++) { 
     for(int j=0;j<array[i].length;j++) { 
      total+=array[i][j]; 
      totallength++; 
     } 
    } 
    return total/(totallength); 
} 
+0

Исправлен код. Теперь это должно сработать. – mincoder

+0

Вы называете это, набрав averagearray (yourarrayname) – mincoder

+0

средний с большим A – mincoder

1

Если вы хотите, чтобы все в одной строке (двумерная int массив):

Arrays.stream(array).flatMapToInt(Arrays::stream).average().getAsDouble(); 

Если вы имеете дело с двумерным double массива:

Arrays.stream(array).flatMapToDouble(Arrays::stream).average().getAsDouble(); 
Смежные вопросы