Почему диагональная сумма моей матрицы по-прежнему равна нулю? - PullRequest
0 голосов
/ 02 ноября 2011

В generateMatrix мне нужно сгенерировать квадратную матрицу со значениями в диапазоне от low до high (включительно), а в SumMajorDiagnal я не уверен, правильно ли я делаю диагностическую сумму.

import java.util.Scanner; 

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

    int[][] matrix= new int[4][4];  

    int row=0;
    int column=0;
    int n=0;
    int sum=0;

    matrix[row][column]= (int)(Math.random() *20)+1;
    matrix = generateMatrix(n,row, column );
    printMatrix (matrix);
    sumMajorDiagnal (matrix);
    System.out.println("Sum of the elements in the major diagnol is " +  sum);
  }

  //I just don't know how to work the generateMatrix method
  public static int[][] generateMatrix(int n, int low, int high){
    int[][] m= new int[4][4];   
    for (int row=0; row <m.length; row++){
      for (int column=0; column<m[row].length; column++){
      }
    }
    return m;
  }
  public static int sumMajorDiagnal (int[] [] m){
    int sum=0;
    for (int diag=0; diag<m.length; diag++){
      sum+=m[diag][diag];
    }
    return sum;
  }
  public static void printMatrix(int[][]m){
    for (int row=0; row <m.length; row++){
      for (int column=0; column<m[row].length; column++){
        System.out.print(m[row][column]+ " ");
      }
    }
  }
}

Компилируется, но печатается:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Сумма элементов в большой диагонали равна 0, поэтому я знаю, что что-то не так с методом generateMatrix. Есть предложения?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2011

Ваш список имеет две основные проблемы и две незначительные.Во-первых, строка

matrix [row] [column] = (int) (Math.random () * 20) +1;

не имеет смыслагде ты это получил.Я предполагаю, что вы имели в виду, что он находится внутри внутреннего цикла в generateMatrix.Во-вторых, вы не присваиваете возвращаемое значение sumMajorDiagonal чему-либо, поэтому сумма по-прежнему равна нулю в вашем System.out.println.

Незначительные проблемы заключаются в том, что инициализация матрицы не имеет смысла, так как generateMatrix создает новыйодин, и есть неиспользуемые параметры в generateMatrix.

0 голосов
/ 01 декабря 2011
public static int[][] generateMatrix(int n, int low, int high){
  int[][] m= new int[4][4];
  int value = low;
  for (int row=0; row <m.length; row++){
    for (int column=0; column<m[row].length; column++){
        m[row][column] = value;
        ++value;
        if (value > high)
           value = low;
    }
  }
  return m;
}

или:

Random rnd = new Random();
...
  m[row][column] = low + rnd.nextInt(high - low + 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...