我正在尝试创建一个方法,将多维数组的字符串打印到表中,表中每个框中的最小空格量由整数参数决定。我的想法是简单地将变量名称放在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)
答案 0 :(得分:3)
你必须像这样构建字符串:
System.out.printf("%" + boxSize + "s", table[i][j]);
将其视为首先创建格式化字符串,然后在printf中使用该字符串。