格式字符串错误的参数太多

时间:2015-12-03 16:29:04

标签: java

我遇到格式字符串问题。

我得到格式字符串中有太多参数的错误(找到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);
    }
}

3 个答案:

答案 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"