我有一个涉及矩阵的问题,我需要做的是用对角线模式的偶数填充一个m×n矩阵(即m行和n列)。
我想到了下面的代码,但是我不能使对角线对角线增加,同样当矩阵是正方形(例如4 x 4矩阵)时,程序可以正常运行,否则,如果是m x n我得到一个错误。
我的代码:
int val;
int lonv;
int fil;
int col;
int su=2;
int matriz[][];
BufferedReader br=new BufferedReader (new InputStreamReader(System.in));
System.out.println("Ingrese el nro de filas para la matriz: ");
fil=Integer.parseInt(br.readLine());
System.out.println("Ingrese el nro de columnas para la matriz: ");
col=Integer.parseInt(br.readLine());
matriz=new int [fil][col];
for(int i=0; i<fil; i++)
{
for(int j=(col-1); j>=0; j-- )
{
if(matriz[i][j]<= 2)
{
matriz[i][j]= su;
su+=2;
}
else
{
System.out.println("");
matriz[i][j]= su;
su+=2;
}
}
}
for(int i=0; i<col; i++)
{
for(int j=0; j<col; j++)
{
System.out.print(matriz[i][j]+" ");
}
System.out.println("");
}
Test Case 1:错误
Test Case 2:无法以要求的对角线格式打印
答案 0 :(得分:0)
由于n的第二个嵌套循环严格取决于列的大小,因此您会收到m×n矩阵的indexoutofbounds错误,这意味着要使其平稳运行,矩阵必须为正方形:
for(int i=0; i<col; i++)
{
for(int j=0; j<col; j++)
{
System.out.print(matriz[i][j]+" ");
}
System.out.println("");
}
当n> m时将发生错误。如果列数大于行数(n> m),则您将尝试访问尚未创建的数据,因为您已正确地将其初始化为行中的m×n矩阵:
matriz=new int [fil][col];
假设您正确插入了一个m×n矩阵的值,只需打印矩阵的形式(一个m×n矩阵而不是一个n×n矩阵)即可,如下所示:
for(int i=0; i<fil; i++)
{
for(int j=0; j<col; j++)
{
System.out.print(matriz[i][j]+" ");
}
System.out.println("");
}
有关对角打印数组的信息可以在以下位置找到:http://javabypatel.blogspot.com/2016/12/print-matrix-diagonally-or-diagonal.html
逻辑应该是可移植的。