将变量放在printf语句中

时间:2018-06-13 00:27:27

标签: java

我正在尝试创建一个方法,将多维数组的字符串打印到表中,表中每个框中的最小空格量由整数参数决定。我的想法是简单地将变量名称放在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();
    }

}

编译器在printf语句中无法读取变量。 有没有办法把变量放在printf语句中,就像我试图在这里做的那样? 如果没有,是否有另一种方法来更改带参数的printf语句?

错误:将boxSize作为变量,它将b解释为布尔值并返回:

 |trueoxSize|trueoxSize|trueoxSize|
 |trueoxSize|trueoxSize|trueoxSize|  
 |trueoxSize|

使用不同的变量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)

1 个答案:

答案 0 :(得分:3)

你必须像这样构建字符串:

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

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