Как вернуть сумму каждой строки в матрице в виде массива? - PullRequest
0 голосов
/ 27 апреля 2020

Да, я новичок. Да, я попробовал Google. Да, мое терпение подвело меня!

У меня есть задача вычислить сумму каждой строки в матрице m и вернуть их в виде массива. Этот маленький кусочек - то, что я придумала до сих пор. Но где я могу объявить массив? Я думаю, что мне нужно сделать сумму в массиве, а не int. Заранее спасибо за помощь!

public static int sum(int[][] m) {
for(int i = 0; i < m.length; i++){    
    int sum = 0;    
        for(int j = 0; j < m[0].length; j++){    
            sum = sum + m[i][j];    
            }    

            return sum;
        } 
 } 

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Вы были близки! Просто нужно объявить Массив вне циклов.

public static int[] sum(int[][] m) {
  int[] sums = new int[m.length];
  for(int i = 0; i < m.length; i++) {
    sums[i] = 0;
    for (int j = 0; j < m[i].length; j++) {
      sums[i] += m[i][j];
    }
  }
  return sums;
}
0 голосов
/ 27 апреля 2020

Вы также можете сделать это более функциональным способом:

public static int[] sum(int[][] m) {
  return Arrays.stream(m)
    .mapToInt(
      arr -> Arrays.stream(arr).reduce(0, (a, b) -> a + b)
    ).toArray();
}
...