如何使用 printf 将单独的字符串格式化为一行?
How do I use printf to format separate strings into one line?
我正在使用 while 循环并从文本文件中获取数据并使用 类 来引用每个字符串。我在获取每个字符串的值并将其打印出来时没有任何问题。
但是,我对如何使用 System.out.printf(....)
在使用循环时将我需要的所有字符串放在一行中感到困惑。
例如,假设文本文件是:
I
like
to
use
computers
我想使用循环将单词打印成一个字符串,每个单词之间的间距可能不同。
我目前的代码:
while (!readyOrder.isEmpty()) {
s = readyOrder.poll();
System.out.printf(s.getQuantity() + " x " + s.getName()
+ "(" + s.getType() + ")" + " "
+ s.getPrice() * s.getQuantity());
System.out.println(" ");
total = total + s.getPrice() * s.getQuantity();
}
输出应该是:
1_x_The Shawshank Redemption_______(DVD)________________19.95
带下划线的空格是空格应该出现的位置和长度。
我如何使用 printf 来做到这一点?
我认为您需要使用 printf 的字符串填充功能。例如 %-30s 格式为 30 个字符的宽度,- 表示左对齐。
for (Stock s : Arrays.asList(
new Stock(1, "The Shawshank Redemption", 100, "DVD"),
new Stock(2, "Human Centipede", 123, "VHS"),
new Stock(1, "Sharknado 2", 123, "Blu ray"))) {
System.out.printf("%2d x %-30s (%-7s) %5.2f\n",
s.getQuantity(), s.getName(), s.getType(),
s.getPrice() * s.getQuantity());
}
输出
1 x The Shawshank Redemption (DVD ) 100.00
2 x Human Centipede (VHS ) 246.00
1 x Sharknado 2 (Blu ray) 123.00
我正在使用 while 循环并从文本文件中获取数据并使用 类 来引用每个字符串。我在获取每个字符串的值并将其打印出来时没有任何问题。
但是,我对如何使用 System.out.printf(....)
在使用循环时将我需要的所有字符串放在一行中感到困惑。
例如,假设文本文件是:
I
like
to
use
computers
我想使用循环将单词打印成一个字符串,每个单词之间的间距可能不同。
我目前的代码:
while (!readyOrder.isEmpty()) {
s = readyOrder.poll();
System.out.printf(s.getQuantity() + " x " + s.getName()
+ "(" + s.getType() + ")" + " "
+ s.getPrice() * s.getQuantity());
System.out.println(" ");
total = total + s.getPrice() * s.getQuantity();
}
输出应该是:
1_x_The Shawshank Redemption_______(DVD)________________19.95
带下划线的空格是空格应该出现的位置和长度。
我如何使用 printf 来做到这一点?
我认为您需要使用 printf 的字符串填充功能。例如 %-30s 格式为 30 个字符的宽度,- 表示左对齐。
for (Stock s : Arrays.asList(
new Stock(1, "The Shawshank Redemption", 100, "DVD"),
new Stock(2, "Human Centipede", 123, "VHS"),
new Stock(1, "Sharknado 2", 123, "Blu ray"))) {
System.out.printf("%2d x %-30s (%-7s) %5.2f\n",
s.getQuantity(), s.getName(), s.getType(),
s.getPrice() * s.getQuantity());
}
输出
1 x The Shawshank Redemption (DVD ) 100.00
2 x Human Centipede (VHS ) 246.00
1 x Sharknado 2 (Blu ray) 123.00