gpt4 book ai didi

java - 如何在java中格式化输出控制台列?

转载 作者:行者123 更新时间:2023-11-30 06:11:35 25 4
gpt4 key购买 nike

我编写了一个程序来创建发票,但是当它的数量达到数千时,输出并不整齐并且会毁掉一切。我该如何解决这个问题,以便程序的列与这样的数字更加一致?这是我用来创建程序的代码。如果有人能提供帮助,我将非常感激。

这是主要方法...

public class InvoicePrinter
{
public static void main(String[] args)
{

Address samsAddress=new Address("Sam's Small Appliances", "100 Main
Street", "Anytown", "CA", "98765");
Invoice samsInvoice =new Invoice(samsAddress);
samsInvoice.add(new Product("Toaster", 29.95),3);
samsInvoice.add(new Product("Hair Dryer", 24.95),1);
samsInvoice.add(new Product("Car Vacuum",19.99),2);
samsInvoice.add(new Product("Nano Parts",100000),1);
samsInvoice.addSimple(new Product("Shipping",5.00));

System.out.println(samsInvoice.format());
}
}

这些是程序运行所需的其他程序

import java.util.ArrayList;

public class Invoice
{
public Invoice(Address anAddress)
{
items=new ArrayList<LineItem>();
billingAddress=anAddress;
simpleItems= new ArrayList<SimpleLineItem>();
}

public void addSimple(Product aProduct)
{
SimpleLineItem anItem= new SimpleLineItem(aProduct);
simpleItems.add(anItem);
}


public void add(Product aProduct, int quantity)
{
LineItem anItem=new LineItem(aProduct,quantity);
items.add(anItem);
}

public String format()
{
String r=" I N V O I C E\n\n"+billingAddress.format()+String.format("\n\n%-30s%8s%5s%8s\n","Description", "Price","Qty","Total");

for(LineItem i:items)
{
r=r+i.format()+"\n";
}

for(SimpleLineItem j:simpleItems)
{
r=r+j.format() + "\n";
}

r = r + String.format("\nAMOUNT DUE: $%8.2f", getAmountDue());
return r;
}

public double getAmountDue()
{
double amountDue = 0;
for (LineItem i : items)
{
amountDue = amountDue + i.getTotalPrice();
}
for(SimpleLineItem j:simpleItems)
{
amountDue = amountDue + j.getPrice();
}
return amountDue;
}


private Address billingAddress;
private ArrayList<LineItem> items;
private ArrayList<SimpleLineItem> simpleItems;
}

还有一点

public class LineItem
{
public LineItem(Product aProduct, int aQuantity)
{
theProduct = aProduct;
quantity = aQuantity;
}

public double getTotalPrice()
{
return theProduct.getPrice() *quantity;
}

public String format()
{
return String.format("%'-30s%'8.2f%'5d%'8.2f", theProduct.getDescription(),theProduct.getPrice(),quantity,getTotalPrice());
}

private int quantity;
private Product theProduct;
}

另一个

public class SimpleLineItem
{
public SimpleLineItem(Product aProduct)
{
theProduct=aProduct;
}

public double getPrice()
{
return theProduct.getPrice();
}

public String format()
{
return String.format("%-30s" +" " + "%8.2f",
theProduct.getDescription(), theProduct.getPrice());
}

private Product theProduct;
}

还有两个

  public class Product
{
public Product(String aDescription,double aPrice)
{
description = aDescription;
price = aPrice;
}

public String getDescription()
{
return description;
}

public double getPrice()
{
return price;
}

private String description;
private double price;
}

最后一张

   public class Address
{
public Address(String aName, String aStreet, String aCity, String
aState,String aZip)
{
name = aName;
street = aStreet;
city = aCity;
state = aState;
zip = aZip;
}

public String format()
{
return name + "\n" + street + "\n" + city + ", " + state + " " + zip;
}

private String name;
private String street;
private String city;
private String state;
private String zip;
}

最佳答案

也许你可以看看 Oracle 关于 System.out.format 和 DecimalFormat 类的 javadocs

Formatting Numeric Print Output

关于java - 如何在java中格式化输出控制台列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50126621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com