Java:打印格式,一行两个数组,长度不同
Java: Print format with two arrays in one line and different length
我想用我给定的两个数组的内容打印一个漂亮的 table 到我的控制台。两个数组都是 ArrayLists 并且可能有不同的长度。此外,在两个 ArrayList 中都是长度为 3 的数组。
我现在面临的问题是我想在一行中包含每个 ArrayLists 的两个值。例如:
EAN STOCK CAPACITY | EAN STOCK CAPACITY
10 3 3 | 10 2 4
11 1 6 | 11 4 5
12 5 7 | 12 6 9
13 7 9 | 13 3 5
14 4 7 | 14 0 4
15 0 7 |
16 0 2 |
在左侧您可以看到一个包含数组的 ArrayList,在右侧可以看到另一个包含数组的 ArrayList。
但是,我不知道如何在一行中打印两个数组的值的同时遍历两个数组。特别是当两个 ArrayLists 的大小不一样时..
到目前为止,这是我的代码...我不知道如何实现它
private void printDrinks(ArrayList<int[]> storageRoom, ArrayList<int[]> saleRoom){
System.out.format("%10s %10s %10s %40s %10s %10s %10s", "EAN", "STOCK", "CAPACITY", "|", "EAN", "STOCK", "CAPACITY"); System.out.println();
String row = "";
for (int i = 0; i < storageRoom.size(); i++){
row += String.format("%10s %10s %10s %10s", storageRoom.get(i)[0], storageRoom.get(i)[1], storageRoom.get(i)[2]);
}
for (int i = 0; i < saleRoom.size(); i++){
row += String.format("%10s %10s %10s %10s", saleRoom.get(i)[0], saleRoom.get(i)[1], saleRoom.get(i)[2]);
}
System.out.println(row);
}
你们能给我提示或帮助我吗?
亲切的问候和谢谢!
首先找到要打印的总行数,然后循环那么多次。如果当前行超过列表的大小,则打印空格(左)或不打印任何内容(右)。
private static void printDrinks(List<int[]> storageRoom, List<int[]> saleRoom){
int rows = Math.max(storageRoom.size(), saleRoom.size());
System.out.println("EAN STOCK CAPACITY | EAN STOCK CAPACITY");
for (int i = 0; i < rows; i++) {
if (i < storageRoom.size())
System.out.printf("%3d %7d %10d |", storageRoom.get(i)[0], storageRoom.get(i)[1], storageRoom.get(i)[2]);
else
System.out.printf("%25s", "|");
if (i < saleRoom.size())
System.out.printf(" %3d %7d %10d", saleRoom.get(i)[0], saleRoom.get(i)[1], saleRoom.get(i)[2]);
System.out.println();
}
}
测试
printDrinks(Arrays.asList(new int[][] {{10,3,3},{11,1,6},{12,5,7},{13,7,9},{14,4,7},{15,0,7},{16,0,2}}),
Arrays.asList(new int[][] {{10,2,4},{11,4,5},{12,6,9},{13,3,5},{14,0,4}}));
printDrinks(Arrays.asList(new int[][] {{10,2,4},{11,4,5},{12,6,9},{13,3,5},{14,0,4}}),
Arrays.asList(new int[][] {{10,3,3},{11,1,6},{12,5,7},{13,7,9},{14,4,7},{15,0,7},{16,0,2}}));
输出
EAN STOCK CAPACITY | EAN STOCK CAPACITY
10 3 3 | 10 2 4
11 1 6 | 11 4 5
12 5 7 | 12 6 9
13 7 9 | 13 3 5
14 4 7 | 14 0 4
15 0 7 |
16 0 2 |
EAN STOCK CAPACITY | EAN STOCK CAPACITY
10 2 4 | 10 3 3
11 4 5 | 11 1 6
12 6 9 | 12 5 7
13 3 5 | 13 7 9
14 0 4 | 14 4 7
| 15 0 7
| 16 0 2
我想用我给定的两个数组的内容打印一个漂亮的 table 到我的控制台。两个数组都是 ArrayLists 并且可能有不同的长度。此外,在两个 ArrayList 中都是长度为 3 的数组。
我现在面临的问题是我想在一行中包含每个 ArrayLists 的两个值。例如:
EAN STOCK CAPACITY | EAN STOCK CAPACITY
10 3 3 | 10 2 4
11 1 6 | 11 4 5
12 5 7 | 12 6 9
13 7 9 | 13 3 5
14 4 7 | 14 0 4
15 0 7 |
16 0 2 |
在左侧您可以看到一个包含数组的 ArrayList,在右侧可以看到另一个包含数组的 ArrayList。
但是,我不知道如何在一行中打印两个数组的值的同时遍历两个数组。特别是当两个 ArrayLists 的大小不一样时..
到目前为止,这是我的代码...我不知道如何实现它
private void printDrinks(ArrayList<int[]> storageRoom, ArrayList<int[]> saleRoom){
System.out.format("%10s %10s %10s %40s %10s %10s %10s", "EAN", "STOCK", "CAPACITY", "|", "EAN", "STOCK", "CAPACITY"); System.out.println();
String row = "";
for (int i = 0; i < storageRoom.size(); i++){
row += String.format("%10s %10s %10s %10s", storageRoom.get(i)[0], storageRoom.get(i)[1], storageRoom.get(i)[2]);
}
for (int i = 0; i < saleRoom.size(); i++){
row += String.format("%10s %10s %10s %10s", saleRoom.get(i)[0], saleRoom.get(i)[1], saleRoom.get(i)[2]);
}
System.out.println(row);
}
你们能给我提示或帮助我吗? 亲切的问候和谢谢!
首先找到要打印的总行数,然后循环那么多次。如果当前行超过列表的大小,则打印空格(左)或不打印任何内容(右)。
private static void printDrinks(List<int[]> storageRoom, List<int[]> saleRoom){
int rows = Math.max(storageRoom.size(), saleRoom.size());
System.out.println("EAN STOCK CAPACITY | EAN STOCK CAPACITY");
for (int i = 0; i < rows; i++) {
if (i < storageRoom.size())
System.out.printf("%3d %7d %10d |", storageRoom.get(i)[0], storageRoom.get(i)[1], storageRoom.get(i)[2]);
else
System.out.printf("%25s", "|");
if (i < saleRoom.size())
System.out.printf(" %3d %7d %10d", saleRoom.get(i)[0], saleRoom.get(i)[1], saleRoom.get(i)[2]);
System.out.println();
}
}
测试
printDrinks(Arrays.asList(new int[][] {{10,3,3},{11,1,6},{12,5,7},{13,7,9},{14,4,7},{15,0,7},{16,0,2}}),
Arrays.asList(new int[][] {{10,2,4},{11,4,5},{12,6,9},{13,3,5},{14,0,4}}));
printDrinks(Arrays.asList(new int[][] {{10,2,4},{11,4,5},{12,6,9},{13,3,5},{14,0,4}}),
Arrays.asList(new int[][] {{10,3,3},{11,1,6},{12,5,7},{13,7,9},{14,4,7},{15,0,7},{16,0,2}}));
输出
EAN STOCK CAPACITY | EAN STOCK CAPACITY
10 3 3 | 10 2 4
11 1 6 | 11 4 5
12 5 7 | 12 6 9
13 7 9 | 13 3 5
14 4 7 | 14 0 4
15 0 7 |
16 0 2 |
EAN STOCK CAPACITY | EAN STOCK CAPACITY
10 2 4 | 10 3 3
11 4 5 | 11 1 6
12 6 9 | 12 5 7
13 3 5 | 13 7 9
14 0 4 | 14 4 7
| 15 0 7
| 16 0 2