0

我需要这个程序来打印一个最大为 10*10 的乘法表。我可以让它打印出所有东西,我只是不知道如何让所有东西都正确排列。任何帮助表示赞赏!

public class multTable
{
    private static final int TABLE_SIZE = 10;
    public static void main(String[] args)
    {
        int table[][] = new int[TABLE_SIZE][TABLE_SIZE];
        for (int r=1; r<=10; r++) 
        {
            for (int c=1; c<=10; c++)
            {
                System.out.printf(" "+r*c);
            }
            System.out.println();
        }
    }
}

这是它打印出来的:

 1 2 3 4 5 6 7 8 9 10
 2 4 6 8 10 12 14 16 18 20
 3 6 9 12 15 18 21 24 27 30
 4 8 12 16 20 24 28 32 36 40
 5 10 15 20 25 30 35 40 45 50
 6 12 18 24 30 36 42 48 54 60
 7 14 21 28 35 42 49 56 63 70
 8 16 24 32 40 48 56 64 72 80
 9 18 27 36 45 54 63 72 81 90
 10 20 30 40 50 60 70 80 90 100
4

3 回答 3

1

使用StringUtils.rightPad

System.out.printf(" "+ StringUtils.rightPad(String.valueOf(r*c),3));

代替

System.out.printf(" "+r*c);

或者

创建自己的rightPad方法

private static String rightPad(String value, int length)
    {
        int size = value.length();
        if (size == length)
        {
            return value;
        }
        else if (size > length)
        {
            return value.substring(0, length);
        }
        else
        {
            StringBuilder stringBuilder = new StringBuilder();
            length = length - size;
            stringBuilder.append(value);
            for (int i = 0; i < length; i++)
            {
                stringBuilder.append(" ");
            }
            return stringBuilder.toString();
        }
    }

在 for 循环中替换它

System.out.format(" " + rightPad(String.valueOf((r * c)), 4)); // you may give any value you like 2,3,4,5...etc for length

输出 :

 1   2   3   4   5   6   7   8   9   10 
 2   4   6   8   10  12  14  16  18  20 
 3   6   9   12  15  18  21  24  27  30 
 4   8   12  16  20  24  28  32  36  40 
 5   10  15  20  25  30  35  40  45  50 
 6   12  18  24  30  36  42  48  54  60 
 7   14  21  28  35  42  49  56  63  70 
 8   16  24  32  40  48  56  64  72  80 
 9   18  27  36  45  54  63  72  81  90 
 10  20  30  40  50  60  70  80  90  100
于 2013-10-18T01:34:44.280 回答
1

使用制表符作为分隔符

System.out.printf(r*c+"\t"); // \t stands for tab

然后你可以得到很好的表格输出,比如

 1   2   3   4   5   6   7   8   9   10 
 2   4   6   8   10  12  14  16  18  20 
 3   6   9   12  15  18  21  24  27  30 
 4   8   12  16  20  24  28  32  36  40 
 5   10  15  20  25  30  35  40  45  50 
 6   12  18  24  30  36  42  48  54  60 
 7   14  21  28  35  42  49  56  63  70 
 8   16  24  32  40  48  56  64  72  80 
 9   18  27  36  45  54  63  72  81  90 
 10  20  30  40  50  60  70  80  90  100
于 2013-10-18T01:42:17.817 回答
0

如果您仍打算使用 (c-style) printf,您可以使用它来确保它们都向右对齐 3 位数:

System.out.printf("%3d ", r*c);
于 2013-10-18T01:47:17.070 回答