根据长度最长的数字打印出特定数量的数字?

时间:2014-03-07 22:48:45

标签: java multidimensional-array

我正在寻找使用并行数组打印数字矩阵。 我想找到一种方法来确保每个数字都打印出适当数量的数字,具体取决于数组中最长数字的长度。

例如:

rows = r;
cols = c;
int[][] matrix = new int[rows][cols];

for (int x = 0; x < cols; x++)
{
  for (int y = 0; y < rows; y++)
  {
    matrix[x][y] = (x*y);
  }
}

如果我选择设置cols = 101rows = 101,我的最大号码将为10000。如何设置此程序,以便在matrix[1][1] = (1*1)我的输出为00001,而不仅仅是1

2 个答案:

答案 0 :(得分:0)

使用String.format:

String.format("%05d", num)

0表示填充0,而5表示将宽度设置为5,因此将打印00001而不是1。

要使其适用于所有行和列长度,请执行以下操作:

int width = (int) Math.log10((rows-1)*(cols-1)) + 1;
String.format("%0"+width+"d", num);

width通过获取它的日志基数10来计算数字矩阵中最大值的零个数。例如,log(10)= 1.因此所有数字的宽度应为width + 1;

答案 1 :(得分:0)

int rows = 101;
int cols = 101;
int padLen = String.valueOf(rows * cols).length();
String[][] matrix = new String[rows][cols];

for (int x = 1; x < cols; x++) {
  for (int y = 1; y < rows; y++) {
    matrix[x][y] = String.format("%0" + padLen + "d", x*y);
  }
}