在java中对齐

问题描述 投票:0回答:2

我正在尝试使用 java 19.0.2 打印乘法表,使用以下代码:

public class MultiplicationTable {
    public static void main(String[] args) {
        for (int i = 1; i < 11; i++) {
            System.out.println(" 5 * "+ String.format("%2n", i) + " = " + (5*i)); 
        }
    }
}

我得到这个错误输出:

Exception in thread "main" java.util.IllegalFormatWidthException: 2
        at java.base/java.util.Formatter$FormatSpecifier.checkText(Formatter.java:3313)
        at java.base/java.util.Formatter$FormatSpecifier.<init>(Formatter.java:2996)
        at java.base/java.util.Formatter.parse(Formatter.java:2839)
        at java.base/java.util.Formatter.format(Formatter.java:2763)
        at java.base/java.util.Formatter.format(Formatter.java:2717)
        at java.base/java.lang.String.format(String.java:4150)
        at HelloWorld.main(HelloWorld.java:4)

有人可以帮忙吗?

java
2个回答
2
投票

在原始代码中,

String.format("%2n", i)
不是有效的格式说明符。
%n
格式说明符用于插入换行符,而不是用于格式化数字。要格式化具有特定宽度的数字,请使用
%2d
,其中 2 是宽度。

public class MultiplicationTable {
    public static void main(String[] args) {
        for (int i = 1; i < 11; i++) {
            System.out.println(String.format(" 5 * %2d = %2d", i, 5*i));
        }
    }
}

在此代码中,

String.format(" 5 * %2d = %2d", i, 5*i)
创建一个格式化字符串,其中
%2d
用于格式化两个整数值
i
5*i
,宽度为2个字符。


0
投票

要将整数格式化为宽度 2,您应该使用“d”而不是 “n”。

您需要更改 system.out 打印代码行

System.out.println(" 5 * "+ String.format("%2n", i) + " = " + (5*i)); 

System.out.println(" 5 * " + String.format("%2d", i) + " = " + (5 * i));

您的最终代码将是:

public class MultiplicationTable {
    public static void main(String[] args) {
        for (int i = 1; i < 11; i++) {
            System.out.println(" 5 * " + String.format("%2d", i) + " = " + (5 * i));
        }
    }
}

结果:

5 *  1 = 55 *  2 = 10
 5 *  3 = 15
 5 *  4 = 20
 5 *  5 = 255 *  6 = 30
 5 *  7 = 35
5 *  8 = 40
 5 *  9 = 45
5 * 10 = 50

© www.soinside.com 2019 - 2024. All rights reserved.