我想在两列中打印变量,但我需要很好地打印它们。我所拥有的是:
想象一下 var1
和 var2
是在整个程序中根据用户输入进行更改的字符串。 var1
的长度会影响var2的位置,所以var2的位置不会平行。那么java中有没有可以自定义打印格式的方法呢?
我想要什么:我想确保两列都以并行方式列出,无论它们的长度如何
到目前为止我已经尝试过:System.out.printf("%s %13s\n", var1, var2);
1)apple 1)bad fruit
2)orange 2)good fruit
3)pig 3)animal <----- off
最佳答案
就像在 C 中一样,有一个 printf功能。可以通过%<num>s
这将打印给定的字符串恰好占据 <num>
人物。如果字符串长度小于 <num>
,将添加空格。因此,第一个参数是要打印的格式,其他参数是将要格式化的值。例如,您可以指定 %d
作为格式。这将打印整数, %f
这将打印 float ,%s
这将打印字符串等。
System.out.printf("%8s %7s %6s\n", "One", "Two", "Three");
这是解决您的问题的代码:
String[][] values = {
{"apple", "good fruit"},
{"orange", "bad fruit"},
{"pig", "animal"}
};
int maxLength = 0;
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 2; j++) {
if(values[i][j].length()> maxLength) {
maxLength = values[i][j].length();
}
}
}
String format = "%d)%-" + maxLength + "s %d)%-" + maxLength + "s\n";
for(int i = 0; i < 3; i++) {
System.out.printf(format, i + 1, values[i][0], i + 1, values[i][1]);
}
这是上面代码的输出:
1)apple 1)good fruit
2)orange 2)bad fruit
3)pig 3)animal
关于Java:两个平行列格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50440440/