基本上我有以下方法,我知道它有点矫枉过正,但我正在学习......
public String showOrder() {
String x = "";
x = "Order Summary: \n ";
for (Order order : orders) {
x += " Product Id: " + order.getProductCode() + " Product Description: " + order.getProductDesc() +
" Order Quantity: " + order.getQuantity() + " Order Cost: £" + order.getCost() + "\n ";
}
x += "Total Cost: "+ getTotalCost() + "p Number of Orders: " + numOfOrders() + " Total Products: " + numOfProducts();
return x;
}
正如我所期望的那样,这在我的测试程序中返回,每个订单都在其自己的行中。
Product Id: 1...etcetc
Product Id 2...etcetc
Product Id 3...etcetc
但是,当我创建一个 PrintWriter 时,showOrder() 方法会在我的 .txt 中打印出一长串。文件。
PrintWriter cartReceipt = new PrintWriter("Cart.txt");
cartReceipt.println(cart1.showOrder());
cartReceipt.flush();
cartReceipt.close();
有没有办法让相同的方法像在 IDE 中那样在 txt 文件中返回一个漂亮的有序列表?
最佳答案
问题是 \n
不是可移植的行结尾。您可以使用 System.lineSeparator()
喜欢
x += " Product Id: " + order.getProductCode()
+ " Product Description: " + order.getProductDesc()
+ " Order Quantity: " + order.getQuantity()
+ " Order Cost: £" + order.getCost() + System.lineSeparator();
但是,如果您将写入操作流化到PrintWriter
(因为您似乎没有使用String
除了写订单)。您可以将 PrintWriter
传递给 writing 方法。类似的东西,
public void writeOrder(PrintWriter pw) {
pw.println("Order Summary:");
for (Order order : orders) {
// NOTE: If possible, I would move this code into Order.toString()
// and then use pw.println(order);
pw.print(" Product Id: ");
pw.print(order.getProductCode());
pw.print(" Product Description: ");
pw.print(order.getProductDesc());
pw.print(" Order Quantity: ");
pw.print(order.getQuantity());
pw.print(" Order Cost: £");
pw.println(order.getCost());
}
pw.print("Total Cost: ");
pw.print(getTotalCost());
pw.print("p Number of Orders: ");
pw.print(numOfOrders());
pw.print(" Total Products: ");
pw.println(numOfProducts());
}
关于java - PrintWriter 换行问题。在 Eclipse 中工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34913223/