PrintWriter - a new line. Works great in Eclipse

Basically I have the following method, which is a bit picky, I know, but I teach .....

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;
    }

This returns in my test program, as I would expect with each order on its own line.

 Product Id: 1...etcetc
 Product Id  2...etcetc
 Product Id  3...etcetc

But when I create PrintWriter, the showOrder () method outputs one long list in my .txt. file.

PrintWriter cartReceipt = new PrintWriter("Cart.txt");

        cartReceipt.println(cart1.showOrder());
        cartReceipt.flush();
        cartReceipt.close();

Is there a way to make the same method return a good ordered list in a txt file, as in the IDE?

+4
source share
3 answers

The problem is \nnot line breaks. You can use System.lineSeparator()for example

x += "    Product Id: " + order.getProductCode()
        + "    Product Description: " + order.getProductDesc()
        + "    Order Quantity: " + order.getQuantity() 
        + "    Order Cost: £" + order.getCost() + System.lineSeparator();

, PrintWriter ( , , String, ). PrintWriter . - ,

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());
}
+4

"\n" . Notepad TXT , '\n' ( "\ r\n" Windows) . IDE .txt, , , , .

- System.lineSeparator(). , , - : , StringBuilder :

public String showOrder() {
    StringBuilder x = new StringBuilder("Order Summary:");
    x.append(System.lineSeparator());
    for (Order order : orders) {
        x.append("    Product Id: ").append(order.getProductCode()
            .append("    Product Description: ").append(order.getProductDesc())
            .append("    Order Quantity: ").append(order.getQuantity())
            .append("    Order Cost: £").append(order.getCost())
            .append(System.lineSeparator());
    }
    x.append("Total Cost: ").append(getTotalCost())
        .append("p        Number of Orders: ").append(numOfOrders())
        .append("     Total Products: ").append(numOfProducts())
        .append(System.lineSeparator());
    return x.toString();
}

, , ASCII, "£" . , (, UTF-8 Windows-1252) javac.

+3

"\n" "\r\n" , . , . , '\n' ( LF), , , .

0

Source: https://habr.com/ru/post/1625239/


All Articles