# Tabelle in der Konsole ausgeben - Probleme



## BlueFox (26. Nov 2017)

Hey Leute,
ich möchte in die Konsole eine Tabelle printen.
Dazu habe ich schon ein gutes Beispiel im Internet gefunden, allerdings mit 3 Spalten - ich benötige 4 Spalten.
Ich habe schon probiert eine vierte Spalte hinzuzufügen in dem ich ein "%20s" in den String geschrieben habe. Allerdings hat das die Table nur veschoben. Ich weiß nicht genau wie ich die vierte Spalte "ID" angezeigt bekomme. 
Wahrscheinlich ist es recht leicht den Code anzupassen, aber ich habe mit dem String.format noch nicht so wirklich gearbeitet.

Hier der Code der Klasse StoreItem (aus dem Beispiel das ich gefunden habe, mit meiner hinzugefügten (aber nicht sichtbaren) vierten Spalte "ID" und dem zusätzlichen Paramater "%20s")


```
package main;

import java.util.ArrayList;
import java.util.List;

public class StoreItem {

private String itemName;
private double price;
private int quantity;
private int id;
private  Boolean firstHead = true;

public StoreItem(String itemName, double price, int quantity, int id) {
    this.setItemName(itemName);
    this.setPrice(price);
    this.setQuantity(quantity);
    this.setID(id);
}

public StoreItem(){
   
}

public String getItemName() {
    return itemName;
}

public void setItemName(String itemName) {
    this.itemName = itemName;
}

public double getPrice() {
    return price;
}

public void setPrice(double price) {
    this.price = price;
}

public int getQuantity() {
    return quantity;
}

public void setQuantity(int quantity) {
    this.quantity = quantity;
}

private void setID(int id){
    this.id = id;
}
private int getId(){
    return this.id;
}


private static void printInvoiceHeader() {
    System.out.println(String.format("%30s %25s %10s %25s %10s %20s", "Item", "|", "Price($)", "|", "Qty", "|", "ID"));
    System.out.println(String.format("%s", "----------------------------------------------------------------------------------------------------------------"));
}
private void printInvoice() {
    System.out.println(String.format("%30s %25s %10.2f %25s %10s %20s", this.getItemName(), "|", this.getPrice(), "|", this.getQuantity(), "|", this.getId()));
}

private static List<StoreItem> buildInvoice(String name, double price, int ammount, int idNum) {
    List<StoreItem> itemList = new ArrayList<>();
    itemList.add(new StoreItem(name, price, ammount, idNum));
    return itemList;
   
}

public void printTable(String name, double price, int ammount, int idNum){
    if(firstHead){
        StoreItem.printInvoiceHeader();
        firstHead = false;
    }
   
    StoreItem.buildInvoice(name, price, ammount, idNum).forEach(StoreItem::printInvoice);
   
}
}
```

Danke euch schhon mal


----------



## krgewb (27. Nov 2017)

BlueFox hat gesagt.:


> Ich habe schon probiert eine vierte Spalte hinzuzufügen in dem ich ein "%20s" in den String geschrieben habe.


Das ist zu wenig.
Probier es mal wie folgt:

```
System.out.println(String.format("%30s %25s %10s %25s %10s %20s %20s", "Item", "|", "Price($)", "|", "Qty", "|", "ID"));
```
Dann wird "ID" angezeigt.


----------

