Java 格式化 - 部分数据未对齐
Java Formatting - Some data are not aligned
这是我第一次做 java。我们目前正在学习它,但我们还没有真正触及格式,我想知道是否有人可以帮助我处理我的代码。所以我的代码如下:
public void displayAllOrder()
{
System.out.println("Initial Cost" + "\t" + "Voucher Code Used" + "\t" + "Voucher Amount Deducted" + "\t\t" + "Final Cost" + "\t" + "Shipping ID" + "\t" + "Shipment Status");
for (int i = 0; i <= currentIndex; i++)
{
String strInitialCost = String.format("%.2f", initialCost[i]);
String strFinalCost = String.format("%.2f", finalCost[i]);
System.out.println("$"+strInitialCost + "\t\t" + voucherCode[i] + "\t\t\t" + "$"+voucherAmount[i] + "\t\t\t" + "$"+strFinalCost + "\t" + shippingID[i] + "\t\t" + shipmentStatus[i]);
}
如果输入很大,它会完美对齐,但如果计算出的输入很小,它不会对齐。示例输出如下:
我希望有人能帮助我理解这个问题。谢谢。
对于每个字符具有相同宽度(“m”和“i”)的固定大小的字体,
您可以将 printf 与 %13.2f 之类的东西一起使用,以获得 13 个右对齐的双精度位置。
public void displayAllOrders() {
System.out.printf("%-15s %-15s %-20s %-15s %-15s %s%n",
"Initial Cost", "Voucher Code Used", "Voucher Amount Deducted",
"Final Cost", "Shipping ID", "Shipment Status");
for (int i = 0; i <= currentIndex; i++) {
System.out.printf("$-14.2f %-15s %5s$%14.2f $%14.2f %-15s %s%n",
initialCost[i], voucherCode[i], "", voucherAmount[i],
finalCost[i], shippingID[i], shipmentStatus[i]);
}
}
上面的代码可能有误,我不知道需要的宽度:15 列宽,列之间有一个 space。 %n
= 行尾。
使用制表符,"\t"
将 Windows 填充到 8 space 秒。这将导致令人不安的布局。
也许您甚至想要不同的输出类型。
关于布局,您可能想将其放入 html table 并使用浏览器观看:
public void displayAllOrder()
{
System.out.println("<html><table><thead><tr>");
for(String title : Arrays.asList("Initial Cost", "Voucher Code Used", "Voucher Amount Deducted", "Final Cost", "Shipping ID", "Shipment Status"))
{
printCell(title);
}
System.out.println("</tr></thead><tbody>");
for (int i = 0; i <= currentIndex; i++)
{
System.out.println("<tr>");
String strInitialCost = String.format("%.2f", initialCost[i]);
String strFinalCost = String.format("%.2f", finalCost[i]);
printCell("$"+strInitialCost);
printCell(voucherCode[i]);
printCell("$"+voucherAmount[i]);
printCell("$"+strFinalCost);
printCell(shippingID[i]);
printCell(shipmentStatus[i]);
System.out.println("</tr>");
}
System.out.println("</tbody></table></html>");
}
private void printCell(String content)
{
System.out.println("<td>" + content + "</td>");
}
这是我第一次做 java。我们目前正在学习它,但我们还没有真正触及格式,我想知道是否有人可以帮助我处理我的代码。所以我的代码如下:
public void displayAllOrder()
{
System.out.println("Initial Cost" + "\t" + "Voucher Code Used" + "\t" + "Voucher Amount Deducted" + "\t\t" + "Final Cost" + "\t" + "Shipping ID" + "\t" + "Shipment Status");
for (int i = 0; i <= currentIndex; i++)
{
String strInitialCost = String.format("%.2f", initialCost[i]);
String strFinalCost = String.format("%.2f", finalCost[i]);
System.out.println("$"+strInitialCost + "\t\t" + voucherCode[i] + "\t\t\t" + "$"+voucherAmount[i] + "\t\t\t" + "$"+strFinalCost + "\t" + shippingID[i] + "\t\t" + shipmentStatus[i]);
}
如果输入很大,它会完美对齐,但如果计算出的输入很小,它不会对齐。示例输出如下:
我希望有人能帮助我理解这个问题。谢谢。
对于每个字符具有相同宽度(“m”和“i”)的固定大小的字体, 您可以将 printf 与 %13.2f 之类的东西一起使用,以获得 13 个右对齐的双精度位置。
public void displayAllOrders() {
System.out.printf("%-15s %-15s %-20s %-15s %-15s %s%n",
"Initial Cost", "Voucher Code Used", "Voucher Amount Deducted",
"Final Cost", "Shipping ID", "Shipment Status");
for (int i = 0; i <= currentIndex; i++) {
System.out.printf("$-14.2f %-15s %5s$%14.2f $%14.2f %-15s %s%n",
initialCost[i], voucherCode[i], "", voucherAmount[i],
finalCost[i], shippingID[i], shipmentStatus[i]);
}
}
上面的代码可能有误,我不知道需要的宽度:15 列宽,列之间有一个 space。 %n
= 行尾。
使用制表符,"\t"
将 Windows 填充到 8 space 秒。这将导致令人不安的布局。
也许您甚至想要不同的输出类型。
关于布局,您可能想将其放入 html table 并使用浏览器观看:
public void displayAllOrder()
{
System.out.println("<html><table><thead><tr>");
for(String title : Arrays.asList("Initial Cost", "Voucher Code Used", "Voucher Amount Deducted", "Final Cost", "Shipping ID", "Shipment Status"))
{
printCell(title);
}
System.out.println("</tr></thead><tbody>");
for (int i = 0; i <= currentIndex; i++)
{
System.out.println("<tr>");
String strInitialCost = String.format("%.2f", initialCost[i]);
String strFinalCost = String.format("%.2f", finalCost[i]);
printCell("$"+strInitialCost);
printCell(voucherCode[i]);
printCell("$"+voucherAmount[i]);
printCell("$"+strFinalCost);
printCell(shippingID[i]);
printCell(shipmentStatus[i]);
System.out.println("</tr>");
}
System.out.println("</tbody></table></html>");
}
private void printCell(String content)
{
System.out.println("<td>" + content + "</td>");
}