打印偶数矩阵对角线

时间:2018-11-22 20:59:36

标签: java arrays crash nested

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

示例:Required Output

我想到了下面的代码,但是我不能使对角线对角线增加,同样当矩阵是正方形(例如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:无法以要求的对角线格式打印

1 个答案:

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

逻辑应该是可移植的。