我必须以像时尚的矩阵打印出表格,每个数字格式化为宽度为4(数字是右对齐的并且在每一行上去掉前导/尾随空格)。前3行看起来像:
1 2 3 4 5 6 7 8 9 10 11 12
2 4 6 8 10 12 14 16 18 20 22 24
3 6 9 12 15 18 21 24 27 30 33 36
这是我的代码:
public static void main (String[] args) {
int i,j;
for(i=1;i<=3;i++){
for(j=1;j<=12;j++){
System.out.format("%4d",i*j);
}
System.out.println();
}
}
在输出中,第一个整数移动了3个空格。如何去除每一行的前导/尾随空格?
答案 0 :(得分:1)
假设你想要摆脱两者之间所有无用的空白,为什么不首先避免它们呢?
public static void main(String[] args) {
int rows = 3, columns = 12;
for (int i = 1; i <= rows; i++) {
for (int j = 1; j <= columns; j++) {
// figure out the max # of digits needed
int necessaryDigits;
if (rows * j < 10) {
necessaryDigits = 1;
} else if (rows * j < 100) {
necessaryDigits = 2;
} else if (rows * j < 1000) {
necessaryDigits = 3;
} else {
necessaryDigits = 4;
}
// print them accordingly with one extra space to distinguish
// the numbers and avoid the leading one in 1st column
System.out.format("%" + (necessaryDigits + (j == 1 ? 0 : 1))
+ "d", i * j);
}
System.out.println();
}
}
输出:
1 2 3 4 5 6 7 8 9 10 11 12
2 4 6 8 10 12 14 16 18 20 22 24
3 6 9 12 15 18 21 24 27 30 33 36
输出或10行:
1 2 3 4 5 6 7 8 9 10 11 12
2 4 6 8 10 12 14 16 18 20 22 24
3 6 9 12 15 18 21 24 27 30 33 36
4 8 12 16 20 24 28 32 36 40 44 48
5 10 15 20 25 30 35 40 45 50 55 60
6 12 18 24 30 36 42 48 54 60 66 72
7 14 21 28 35 42 49 56 63 70 77 84
8 16 24 32 40 48 56 64 72 80 88 96
9 18 27 36 45 54 63 72 81 90 99 108
10 20 30 40 50 60 70 80 90 100 110 120
答案 1 :(得分:0)
尝试在第二个循环中打印与i相同的第一个数字,然后从第二个循环开始第二个循环,例如2:
for(i=1;i<=3;i++){
System.out.print(i);
for(j=2;j<=12;j++){
System.out.format("%4d",i*j);
}
System.out.println();
}
答案 2 :(得分:0)
如果允许你提出这样的条件 int i,j;
for (i = 1; i <= 3; i++)
{
for (j = 1; j <= 12; j++)
{
if (j == 1)
{
System.out.format("%d", i * j);
}
else
{
System.out.format("%4d", i * j);
}
}
System.out.println();
}