Сумма каждой строки 2d массива. Внутри метода

#java #arrays #sum

Вопрос:

 public class MagicSquare {

    public static void main(String[]args){

        int[][] tabela = {{ 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }};

        System.out.println(d1(tabela));
        System.out.println(d2(tabela));
    System.out.print(poVrsticah(tabela));


    }

    //diagnal1
    public static int d1(int[][] tab){
      int vsota=0;
      for (int i=0;i<tab.length ;i   ) {
        for (int j=0;j<tab[i].length ;j   ) {
          if (i==j) {
            vsota =tab[i][j];
          }
        }
      }
        return vsota;
    }

    //diagnal2
    public static int d2(int[][] tab){
      int vsota=0;
      for (int i=0;i<tab.length ;i   ) {
        for (int j=0;j<tab[i].length ;j   ) {
          if (i j==tab.length-1) {
            vsota = tab[i][j];
          }
        }
      }
        return vsota;
    }

    //Method rows
    public static int[] poVrsticah(int[][]tab){
        int[] rez = new int[tab.length];
    for (int i=0;i<tab.length ;i   ) {
            for (int j=0;j<tab[i].length ;j   ) {
        rez[i] = tab[i][j];
            }
        }
    return rez;
    }
    //method column
    public static int[] poStolpcih(int[][]tab){
    int[] rez = new int[tab.length];
        for (int i=0;i<tab.length ;i   ) {
            for (int j=0;j<tab[i].length ;j   ) {
                //Code here(1 line missing)
            }
        }
    return rez;
    }

}
 

Мой учитель отправил мне электронное письмо с исправленным кодом, который я не знаю, как полностью заполнить.Упражнение состоит в том, чтобы суммировать строки и столбцы в 2d-массиве. В комментариях, которые он оставил, Он сказал, что не хватает только 1 строки. Я не знаю, что поставить на их место. Я попытался вставить rez[i] = tab[i][j]; чтобы подвести итог. Но в итоге получается надпись «[I@2c7b84de». Что я прочитал, это проблема с преобразованиями int и строк. Я не уверен, что это правильный подход, так как я потерялся в соусе. Пожалуйста, помогите

Комментарии:

1. чтобы получить обычную строку вместо «[I@2c7b84de», вам необходимо переопределить свой метод

2. Я думаю, так и должно быть rez[j] = tab[i][j]; . Кроме того, если предоставленные входные данные не являются квадратной матрицей, т. е. Количество строк = столбцов, то вам нужно использовать int[] rez = new int[tab[0].length]; для столбцов. И для решения "[I@2c7b84de" этой проблемы вы можете просто выполнить цикл над выходным массивом и распечатать его элементы.

Ответ №1:

Это работает для любой матрицы, а не только для квадратной матрицы, что означает, что нет необходимости иметь одинаковое количество строк и столбцов в 2D-массиве.

 public static int[] calculateSumRow(int[][] array) {
        int length = array.length;

        int sum = 0, pos = -1;
        int[] toReturn = new int[array.length];

        for (int[] a : array) {
            pos  ;
            int length2 = a.length;

            for (int x = 0; x < length2; x  )
            {
                sum  = a[x];
            }

            toReturn[pos] = sum;
            sum = 0;
        }
        return toReturn;
    }
 

Затем для печати выходных данных используйте System.out.println(Arrays.toString(calculateSumRow(your_matrix)));

Ответ №2:

Я забыл обновить этот вопрос.

для исправления вывода используйте rez[j] = tab[i][j]; точку с запятой-спасибо

И чтобы исправить «[I@2c7b84de», просто вызовите метод, как poVrsticah(tabela);

Мой окончательный код в конечном итоге выглядит так https://justpaste.it/8gflr