Java 将变量放入printf语句中

Java 将变量放入printf语句中,java,Java,我正在尝试制作一个方法,将多维字符串数组打印到一个表中,表中每个框中的最小空格数由一个整数参数决定。我的想法是简单地将变量名放在printf语句中数字值所在的位置,但这不起作用。有没有办法像这样将变量放入printf语句中 以下是我使用的多维数组示例: Static String[][] multi = { {"cow", "horseshoe", "goat"}, {"billybob", "frededmenton", "al"}, {"apple"}, }; 下面是方法调用: pri

我正在尝试制作一个方法,将多维字符串数组打印到一个表中,表中每个框中的最小空格数由一个整数参数决定。我的想法是简单地将变量名放在printf语句中数字值所在的位置,但这不起作用。有没有办法像这样将变量放入printf语句中

以下是我使用的多维数组示例:

Static String[][] multi =  { {"cow", "horseshoe", "goat"}, 
{"billybob", "frededmenton", "al"},
{"apple"}, };
下面是方法调用:

printMultiStringTable(multi, "Example Header", 5);
以下是我目前使用的方法:

public static void PrintMultiStringTable(String[][] table, String header, int boxSize) {
    System.out.printf("%s\n", header); //Prints a header at the top
    for (int i = 0; i < table.length; i++) {
        System.out.printf("%s", "|"); // Prints a vertical line at the start of each line
        for(int j = 0; j < table[i].length; j++) { 
            System.out.printf("%boxSizes", table[i][j]); // shoehorned in boxSize variable
            System.out.print("|");
        }
        System.out.println();
    }

}
如果使用不同的变量minSize,则会出现此错误

Exception in thread "main" java.util.UnknownFormatConversionException: 
Conversion = 'm'
    at java.util.Formatter$FormatSpecifier.conversion(Unknown Source)
    at java.util.Formatter$FormatSpecifier.<init>(Unknown Source)
    at java.util.Formatter.parse(Unknown Source)
    at java.util.Formatter.format(Unknown Source)
    at java.io.PrintStream.format(Unknown Source)
    at java.io.PrintStream.printf(Unknown Source)
    at test.printMultiStringTable(test.java:26)
    at test.main(test.java:15)
线程“main”java.util.UnknownFormatConversionException中的异常: 转换='m' 位于java.util.Formatter$FormatSpecifier.conversion(未知源) 位于java.util.Formatter$FormatSpecifier。(未知源) 位于java.util.Formatter.parse(未知源) 位于java.util.Formatter.format(未知源) 位于java.io.PrintStream.format(未知源) 位于java.io.PrintStream.printf(未知源) 在test.printMultiStringTable(test.java:26) at test.main(test.java:15)
必须按照以下方式构建字符串:

System.out.printf("%" + boxSize + "s", table[i][j]);

将其视为首先创建一个格式化字符串,然后在printf中使用该字符串。

您必须按照以下方式构建字符串:

System.out.printf("%" + boxSize + "s", table[i][j]);

将其视为首先创建一个格式化字符串,然后在printf中使用该字符串。

请显示错误!它通常是“%5s”,至少有5个空格。所以我试着用变量来代替5你可以忽略我的评论我误解了这个问题。请显示错误!它通常是“%5s”,至少有5个空格。所以我试着用变量来代替5,你可以忽略我的评论,我误解了这个问题。