【问题标题】:How to print numbers in right-aligned manner? [duplicate]如何以右对齐方式打印数字? [复制]
【发布时间】:2014-12-23 01:25:39
【问题描述】:

所以我尝试了一次 codeeval 的简单问题 multiplication tables

其中一个要求是

(数字右对齐并去掉前导/尾随空格 每行)

我不知道该怎么做,我当前的代码看起来像

private static void printTable(final int numberOfTables, final int numberOfTimes) {
        for (int i = 1; i <= NUMBER_OF_TABLES; i++) {
            final StringBuilder sb = new StringBuilder();
            for (int j = 1; j <= NUMBER_OF_TIMES; j++) {
                sb.append(i * j).append("    ");
            }
            System.out.println(sb.substring(0, sb.length() - 4));
        }
    }

我得到的是

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
11    22    33    44    55    66    77    88    99    110    121    132
12    24    36    48    60    72    84    96    108    120    132    144

如何右对齐数字?

【问题讨论】:

  • 您可以查看 printf 并使用百分比修饰符来填充您的代码。 printf("%10d", yourNumber);

标签: java printf


【解决方案1】:

正如您在问题标题中所说,您使用printf()。比如,

for (int i = 1; i <= NUMBER_OF_TABLES; i++) {
    for (int j = 1; j <= NUMBER_OF_TIMES; j++) {
        System.out.printf("%6d", i * j);
    }
    System.out.println();
}

其中 6 是宽度,Formatter 的 Javadoc 将 width 描述为

宽度

宽度是要写入输出的最小字符数。对于行分隔符转换,宽度不适用;如果提供,将抛出异常。

'd' ... 将参数格式化为十进制整数。

【讨论】:

    【解决方案2】:

    要将数字打印为右对齐,您可以使用 System.out.printf("%nd", x); 其中 n 是最小宽度,x 是要打印的整数。

    现在您可以使用以下代码回答您的问题

     for(int i=1; i<= NUMBER_OF_TABLES; i++)
        {
            int j=1;
            System.out.print(i*j++);
            for(; j<= NUMBER_OF_TIMES; j++)
            {
                System.out.printf("%4d",j*i);
            }
            System.out.println("");
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 2020-09-05
      • 2019-01-12
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      相关资源
      最近更新 更多