我遇到格式字符串问题。
我得到格式字符串中有太多参数的错误(找到9,预期为8)。我也尝试重新格式化其他程序,但它们也给出了与此相同的错误。
守则:
public class FormattingOutput {
public static void main(String args[]) {
String module1Name = "Mathematics", module2Name = "Introduction to Programming", module3Name = "Web Design";
int module1Students = 64, module2Students = 84, module3Students = 62;
float module1Mark = 72.031f, module2Mark = 61.845f, module3Mark = 72.774f;
String formatString = String.format("%-35s%-10d%.1f\n%-35s%-10d.1f\n%-35s%-10d%.1f",module1Name,module1Students,module1Mark,module2Name,module2Students,module2Mark,module3Name,module3Students,module3Mark);
System.out.println("Module Name #Students Average Mark\n" + formatString);
}
}
答案 0 :(得分:6)
重新格式化:
String formatString = String.format("
%-35s
%-10d
%.1f\n
%-35s
%-10d.1f\n
%-35s
%-10d
%.1f",
module1Name,
module1Students,
module1Mark,
module2Name,
module2Students,
module2Mark,
module3Name,
module3Students,
module3Mark);
你忘了一个'%'字符,不应该是:
String formatString = String.format("
%-35s
%-10d
%.1f\n
%-35s
%-10d
%.1f\n
%-35s
%-10d
%.1f",
module1Name,
module1Students,
module1Mark,
module2Name,
module2Students,
module2Mark,
module3Name,
module3Students,
module3Mark);
答案 1 :(得分:1)
你有8%的字符,这意味着预期有8个参数。 但是你提供9
答案 2 :(得分:0)
看起来您的字符串在%
前面缺少.1f
符号。 "%-35s%-10d%.1f\n%-35s%-10d.1f\n%-35s%-10d%.1f"
应为"%-35s%-10d%.1f\n%-35s%-10d%.1f\n%-35s%-10d%.1f"