我正在尝试围绕一个上升和下降的空矩阵建立边框。我已经有从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;
}
}
这里还有一张图片,说明输出应该是什么样的,以便让您更好地了解它应该是什么。 picture of output
答案 0 :(得分:1)
我认为你可以通过一个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;
}
这假设matrix
实际上是正方形(即具有相同的行数和列数)。如果没有,那么我的代码将不得不改变,但是你的问题陈述会再次改变。
for (int r=0; r < matrix.length; ++r) {
for (int c=0; c < matrix.length; ++c) {
System.out.print(matrix[r][c] + " ");
}
System.out.println();
}
<强>输出:强>
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
答案 1 :(得分:0)
对于你的行,你应该使用matrix [0] .length。另一件事是你应该使用矩阵维度而不是硬编码4到代码
bp.get_figure().gca().set_title("")