在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方法有问题。有什么建议吗?
答案 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中有未使用的参数。