java - PrintWriter 换行问题。在 Eclipse 中工作正常

标签 java

基本上我有以下方法,我知道它有点矫枉过正,但我​​正在学习......

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/

相关文章:

java - Android NullPointerException(getDatabaseLocked 和 getWritableDatabase)

java - Notify 和 NotifyAll 仅影响处于阻塞状态的线程

java - JVM 缺少 Rhino

java - 在二维数组中使用 split() 方法?

java - 玩!框架使用 <lot> 的静态变量

java - 如何为进行回退重试的方法编写单元测试? (在Java中使用FailSafe)

java - 在窗口关闭时销毁存储在数据库中的用户 session

c# - 号码本地化不是不必要的吗?

java - 在Java中获取ASCII-6编码

java - spring-data-cassandra 设置一致性级别