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