Массив суммирует строки и столбцы массива

#java #arrays

#java #массивы

Вопрос:

 import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {
        int n, m, sumRows= 0, sumColumns= 0, i = 0, j = 0; //rows(n), Columns(m)
        n = Integer.parseInt(JOptionPane.showInputDialog(null, "Rows"));
        m = Integer.parseInt(JOptionPane.showInputDialog(null, "Columns"));
        int[][] a = new int[n][m];
        int[] b = new int[n];
        int[] c = new int[m];
        for(i = 0; i < a.length; i  ) {
            for(j = 0; j < a[i].length; j  ) {
                a[i][j] = Integer.parseInt(JOptionPane.showInputDialog(null, "Type"
                          "an int. A["   i  "]"   "["   j   "] = "));
                sumRows = a[i][j];
                sumColumns = a[j][i];

                if(j == a[i].length-1) {
                    b[i] = sumRows;
                    sumRows= 0;
                }

                if(i == a.length-1) {
                    c[j] = sumRows;
                    sumRows= 0;
                }
                System.out.println("Sum Rows: "   sumRows  " Vector B"   i   ": "   b[i]);
                System.out.println("Sum Columns: "   sumColumns   " Vector C"   j   ": "   c[j]);
            }

        }

    }

}
  

Итак, я должен суммировать строки и столбцы и сохранить их в двух векторах, я должен сохранить сумму строк в векторе B и сумму столбцов в векторе C.
Сумма строк работает отлично, но я не могу приступить к работе с суммой столбцов.

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

1. Почему sumRows и sumColums ? Почему бы просто не суммировать a[i][j] непосредственно в b[i] и c[j] ?

2. sumaColumns в Sysout похоже на опечатку.

3. @SubirKumarSao Ах да, это sumColumns.

4. Если n!=m, ваш код не будет работать. Количество столбцов будет меньше, если количество строк меньше, чем столбцов. И потенциальный arrayindexoutofbound, когда строк больше, чем столбцов.

Ответ №1:

Попробуйте это:

 public class Main {
    public static void main(String[] args) {

         int n = Integer.parseInt(JOptionPane.showInputDialog(null, "Rows"));
         int m = Integer.parseInt(JOptionPane.showInputDialog(null, "Columns"));

        int[][] a = new int[n][m];
        int[] b = new int[n];
        int[] c = new int[m];

        for (int i = 0; i < a.length; i  ) {
            for (int j = 0; j < a[i].length; j  ) {

                a[i][j] = Integer.parseInt( JOptionPane.showInputDialog(null, "Type"   "an int. A["   i   "]"   "["   j   "] = "));

                b[i]  = a[i][j];
                c[j]  = a[i][j];
            }

        }

        // USED FOR PRINTING
        //  -------------------------
        for (int i = 0; i < b.length; i  ) {
            System.out.println("Sum Row "   (i   1)   " is "   b[i]);
        }

        for (int i = 0; i < c.length; i  ) {
            System.out.println("Sum Column "   (i   1)   " is "   c[i]);
        }
        // -------------------------
    }
}
  

ВВОД:

 0   1   2   3   4   
5   6   7   8   9   
10  11  12  13  14  
15  16  17  18  19
  

ВЫВОД:

 Sum Row 1 is 10
Sum Row 2 is 35
Sum Row 3 is 60
Sum Row 4 is 85
Sum Column 1 is 30
Sum Column 2 is 34
Sum Column 3 is 38
Sum Column 4 is 42
Sum Column 5 is 46