我有一个问题。我有一个4x4的二维数组作为乘法表,我必须在各列之间留一个间隔,以使m和m之间的间隔等于给定列+1中最后一个数字的长度。
在我发送的代码中,为注释提供了尝试解决它但未成功的方法
https://gist.github.com/Isbena-4/7e3a628c55d6d9d26f428b9e268e132e
必须看起来
1 2 3 4 2 4 6 8 3 6 9 12 4 8 12 16
答案 0 :(得分:3)
您可以遍历数组并在每一列中找到位数最多的元素。比使用%<LEN>d
格式的字符串以正确的长度显示它:
int[][] input = {
{1, 2, 3, 4},
{2, 4, -6666, 8},
{3, 6, 9, 12},
{4, 8, 12, 16}
};
int n = input.length;
int[] colLengths = new int[n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
int l = String.valueOf(input[j][i]).length();
if (l > colLengths[i]) {
colLengths[i] = l;
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.printf("%" + colLengths[j] + "d ", input[i][j]);
}
System.out.println();
}
将打印格式正确的网格,同时还处理负数:
1 2 3 4
2 4 -6666 8
3 6 9 12
4 8 12 16