Java 在矩阵中按降序生成数字边框

Java 在矩阵中按降序生成数字边框,java,arrays,loops,matrix,Java,Arrays,Loops,Matrix,我试图在一个上升和下降的空矩阵周围画一个边框。我已经有了从0上升到4的顶部和左侧,但是我不能让右侧和底部从4上升到0。下面是我的for循环代码。我尝试了每一种变体来让它工作,但它要么给我一个索引越界异常,要么只是显示为零。如果有任何反馈,我将不胜感激 private static void fillBorder( int[][] matrix ) { for (int r=0; r<matrix.length; ++r) // left side { matri

我试图在一个上升和下降的空矩阵周围画一个边框。我已经有了从0上升到4的顶部和左侧,但是我不能让右侧和底部从4上升到0。下面是我的for循环代码。我尝试了每一种变体来让它工作,但它要么给我一个索引越界异常,要么只是显示为零。如果有任何反馈,我将不胜感激

private static void fillBorder( int[][] matrix )
{
   for (int r=0; r<matrix.length; ++r) // left side
   {
        matrix[r][0] = r; 
   }
   for (int j=0 ; j<matrix.length; ++j) // top
   {
        matrix[0][j] = j;
   }
   for (int m=matrix.length; m>0; --m) // bottom
   {
        matrix[4][m] = m;
   }
   for (int s=matrix.length; s>0; --s) // right side
   {
        matrix[s][4] = s;
   }

}
私有静态void fillBorder(int[][]矩阵)
{
for(int r=0;r0;--s)//右侧
{
矩阵[s][4]=s;
}
}
这里还有一张输出应该是什么样子的图片,让您更好地了解它应该是什么


我认为您可以通过一个
for
循环来实现这一点:

for (int i=0; i < matrix.length; ++i) {
    matrix[0][i] = i;
    matrix[i][0] = i;
    matrix[matrix.length-1][matrix.length-1-i] = i;
    matrix[matrix.length-1-i][matrix.length-1] = i;
}
输出:

0 1 2 3 4
1 0 0 0 3
2 0 0 0 2
3 0 0 0 1
4 3 2 1 0

对于行,应使用矩阵[0]。长度。另一件事是您应该使用矩阵维度,而不是将4硬编码到代码中

   private static void fillBorder( int[][] matrix )
    {
       for (int r=0; r<matrix.length; ++r) // left side
       {
            matrix[r][0] = r; 
       }
       for (int j=0 ; j<matrix[0].length; ++j) // top
       {
            matrix[0][j] = j;
       }
       for (int m=matrix[0].length; m>0; --m) // bottom
       {
            matrix[matrix.length - 1][m] = m;
       }
       for (int s=matrix.length; s>0; --s) // right side
       {
            matrix[s][matrix[0].length - 1] = s;
       }

    }
私有静态void fillBorder(int[][]矩阵)
{
for(int r=0;r0;--s)//右侧
{
矩阵[s][矩阵[0]。长度-1]=s;
}
}

使用m>=0和s>=0
   private static void fillBorder( int[][] matrix )
    {
       for (int r=0; r<matrix.length; ++r) // left side
       {
            matrix[r][0] = r; 
       }
       for (int j=0 ; j<matrix[0].length; ++j) // top
       {
            matrix[0][j] = j;
       }
       for (int m=matrix[0].length; m>0; --m) // bottom
       {
            matrix[matrix.length - 1][m] = m;
       }
       for (int s=matrix.length; s>0; --s) // right side
       {
            matrix[s][matrix[0].length - 1] = s;
       }

    }