我正在寻找使用并行数组打印数字矩阵。 我想找到一种方法来确保每个数字都打印出适当数量的数字,具体取决于数组中最长数字的长度。
例如:
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 = 101
和rows = 101
,我的最大号码将为10000
。如何设置此程序,以便在matrix[1][1] = (1*1)
我的输出为00001
,而不仅仅是1
?
答案 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);
}
}