为什么矩阵的对角线总和仍为零?

时间:2011-11-02 19:57:18

标签: java matrix sum

在generateMatrix中,我需要生成一个方形矩阵,其值范围为lowhigh(包括),在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 :(得分:0)

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);

答案 1 :(得分:0)

您的商家信息有两个主要问题和两个小问题。第一,行

  

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

在你得到它的地方没有意义。我假设你的意思是它在generateMatrix的内部循环中。其次,你没有将sumMajorDiagonal的返回值赋给任何东西,这就是你的System.out.println中sum总和为零的原因。

小问题是矩阵的初始化是没有意义的,因为generateMatrix构造了一个新的,并且generateMatrix中有未使用的参数。