【问题标题】:How can i make this matrix example with jagged array in java我如何在java中使用锯齿状数组制作这个矩阵示例
【发布时间】:2020-06-21 11:52:19
【问题描述】:
我有这个代码:
public class matrixExample {
public static void main(String[] args) {
int m[][] = new int[5][5];
int count = 1;
for (int i=0; i<m.length; i++)
for(int j=0; j<i+1; j++)
m[i][j] = count++;
for (int i=0; i<m.length; i++)
{
for (int j=0; j<m[i].length; j++)
System.out.print(m[i][j] + " ");
System.out.println();
}
}
}
然后输出:
我该怎么做,如下图所示?
【问题讨论】:
标签:
java
arrays
matrix
formatting
【解决方案1】:
int size = 5;
int[][] m = new int[size][size];
int count = 1;
for (int i = 0; i < size; ++i)
for (int j = size - i - 1; j < size; ++j)
m[i][j] = count++;
【解决方案2】:
您可以按照上面saka1029's answer 中的建议填充矩阵,然后使用格式化输出进行打印:
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < m[i].length; j++) {
System.out.printf(" %2d ", m[i][j]);
}
System.out.print('\n');
}
或者,可以保持“正常”矩阵,只改变它的输出:
public static void main(String []args){
int m[][] = new int[5][5];
int count = 1;
// keeping initial array as is
for (int i=0; i<m.length; i++)
for(int j=0; j<i+1; j++)
m[i][j] = count++;
for (int i = 0; i < m.length; i++) {
StringBuilder sb = new StringBuilder();
for (int j = 0; j < m[i].length; j++) {
if (m[i][j] > 0) {
sb.append(String.format(" %2d ", m[i][j]));
} else {
sb.insert(0, String.format(" %2d ", m[i][j]));
}
}
System.out.println(sb.toString());
}
}
两种情况下的输出是相同的:
0 0 0 0 1
0 0 0 2 3
0 0 4 5 6
0 7 8 9 10
11 12 13 14 15