java - 如何以右对齐方式打印数字?

标签 java printf

所以我正在尝试一次代码评估的简单问题 multiplication tables

其中一个要求是

(The numbers are right-aligned and strip out leading/trailing spaces on each line)

我不知道如何做到这一点,我当前的代码看起来像

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()。比如,

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 是宽度,Javadoc 为 Formatter宽度描述为

Width

The width is the minimum number of characters to be written to the output. For the line separator conversion, width is not applicable; if it is provided, an exception will be thrown.

还有

'd' ... Formats the argument as a decimal integer.

关于java - 如何以右对齐方式打印数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26594810/

相关文章:

c - C 中的 3 位数字生成器

c - 函数返回 int 但出现奇怪的行为

c - 不使用条件语句检测-1

java - 单元测试 - 如何正确计算断言的期望值

java - 如何在 Firebase 中使子级可扩展并为其添加值?

Java 日志框架和日志分析器

java - 为什么使用 spring MVC 进行对象到 json 转换在这种情况下不起作用?

c - 为什么 printf() 在 Windows 上打印这个神秘的额外文本?

JAVA:如何限制一个类在一个级别上扩展

在 printf 中 Perl 无效转换