我的节目在这里
int row=4,column=3;
int a[][]=new int[row][column];
a[0][0]=1;
a[0][1]=2;
a[0][2]=3;
a[1][0]=4;
a[1][1]=5;
a[1][2]=6;
a[2][0]=7;
a[2][1]=8;
a[2][2]=9;
a[3][0]=10;
a[3][1]=11;
a[3][2]=12;
for(i=0; i<row; i++){
System.out.println(" ");
for (j=0;j<column; j++){
System.out.print(a[i][j]);
System.out.print(" ");
而不是使用上面的程序。我想以这种方式放置我的阵列
int row=4,column=3;
int a[][]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
但是我很难像这样打印它
1 2 3
4 5 6
7 8 9
10 11 12
答案 0 :(得分:0)
您只需要一个嵌套循环来遍历行到底部和从左到右的列,如下所示:
for (int i = 0; i < rows; i++) { // traverse rows
for (int j = 0; j < cols; j++) { // traverse columns
System.out.print(a[i][j] + " "); // prints element in a(i,j) and a space before the next element
if (j == cols - 1) System.out.println(""); // if it reached the end of the column, breaks to a new line
}
}
答案 1 :(得分:0)
您的意图有点不清楚,但我猜测您排队输出(空格格式)时遇到问题。
如果您知道(预先)数组中的最大值,那么您可以使用填充格式化输出,否则您必须遍历数组两次。
所以你可以尝试这样的事情:
public static void main(String[] args) throws Exception {
int array[][]={{1,2,3},{4,5,6},{7,8,9},{10,11,12},{100,101,102}};
// Determine which number has the most digits to set padding width
int padding = 1;
for (int[] row : array) {
for (int col : row) {
int strLength = String.valueOf(col).length();
if (strLength > padding) {
padding = strLength;
}
}
}
for (int[] row : array) {
for (int col : row) {
// Adding 1 to padding to include spaces
System.out.print(String.format("%" + (padding + 1) + "d", col));
}
// Ends the row
System.out.println();
}
}
结果:
1 2 3
4 5 6
7 8 9
10 11 12
100 101 102
你可以看到最大的值有3个数字,但我们用4填充,这样每个数字的打印都会占用4个字符,这样就可以将所有内容均匀分开并且是正确的。
如果您被允许使用Java 8,这是一种确定数组中最大值的流方式。
public static void main(String[] args) throws Exception {
int array[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}, {100, 101, 102}, {1001, 1002, 1003}};
int padding = String.valueOf(Arrays.stream(array).flatMapToInt(a -> Arrays.stream(a)).max().getAsInt()).length();
for (int[] row : array) {
for (int col : row) {
// Adding 1 to padding to include spaces
System.out.print(String.format("%" + (padding + 1) + "d", col));
}
// Ends the row
System.out.println();
}
}