打印偶数矩阵对角线



我有一个涉及矩阵的问题,我需要做的是用对角线模式中的偶数填充一个m乘n矩阵(即m行n列(。

示例:所需输出

我想出了下面的代码,但我不能使级数对角增加,而且当矩阵是正方形时(例如4乘4的矩阵(,程序运行正常,但否则,如果是m乘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("");
}

测试用例1:错误

测试用例2:无法以所需的对角线格式打印

错误

第二个嵌套循环

对于一个m乘n的矩阵,你会得到一个边界索引错误,因为你的第二个嵌套循环严格取决于列的大小,这意味着它要平稳运行,矩阵必须是正方形的:

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时将发生错误。如果列数大于行数(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

这个逻辑应该是可以转换的。

最新更新