如何在乘法表中进行间距

时间:2019-03-29 20:05:36

标签: java

我有一个问题。我有一个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

1 个答案:

答案 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