【发布时间】:2022-01-20 08:49:25
【问题描述】:
我在 java 中有一个字符串,我正在打印,并且有标题和金额,例如下面
Rice Ksh 150
Cooking Oil Ksh 200
Skinless White Meat Ksh 450
Honey Ksh 270
Cottage Cheese Ksh 539
我打印时想要达到的效果如下所示
Rice Ksh 150
Cooking Oil Ksh 200
Skinless White Meat Ksh 450
Honey Ksh 270
Cottage Cheese Ksh 539
下面是我尝试过但它不起作用的另一个函数,我可以使用另一个函数来使输出合理,其中项目的标题在最左边/开始并且数量在最右边/结束
for (Receipt receipt : receiptList) {
String output = "";
String itemAmount = String.format("%s %s %s", receipt.getItem(),
"Ksh", receipt.getAmount());
for (int i = 0; i < itemAmount.length(); i++){
char c = itemAmount.charAt(i);
if (c==' '){
output += " ";
}else {
output += "" + c;
}
}
// print output here
}
【问题讨论】:
-
您可以找到收据的最大长度。并用它来计算其他人的空间。
-
@MasterYi 你有示例代码吗
-
这个低效的复制循环有什么意义?之后,
output包含与itemAmount完全相同的内容。无论如何,当您使用String.format时,让它发挥作用,例如String output = String.format("%-20s Ksh%5s", receipt.getItem(), receipt.getAmount());。当您的“此处打印输出”意味着打印到控制台/响应时。 stdout,您可以使用System.out.printf("%-20s Ksh%5s%n", receipt.getItem(), receipt.getAmount());一次性格式化和打印。 -
@Holger 我正在使用硬拷贝打印机打印,这就是为什么我希望它们被安排好
-
我从来没有问过你为什么要格式化输出。我问你为什么添加了一个完全没有任何效果的毫无意义的复制循环。