如何从一行整数中删除前导/尾随空格?

时间:2016-01-08 08:40:10

标签: java formatting

我必须以像时尚的矩阵打印出表格,每个数字格式化为宽度为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个空格。如何去除每一行的前导/尾随空格?

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();
        }