我正在尝试使用 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)
有人可以帮忙吗?
在原始代码中,
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个字符。
要将整数格式化为宽度 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