# [Anfängerfrage] Tabellenausgabe auf der Console



## pinsleepe (27. März 2009)

Hallo,
ich möchte auf der Console eine Art Tabelle anzeigen. Mit "\t" wird zwar zum nächsten Tab gegangen aber wegen der unterschiedlichen Stringlängen ist es nicht immer dieselbe Stelle. Wie kann ich erzwingen, dass sich der Rest immer an das jeweils längste Wort in der "Spalte" anpasst?

MfG,
pinsleepe


----------



## zeja (27. März 2009)

Was besseres als jede Spalte durchzugehen und zu schauen was die maximale Länge ist und dann die Tabelle mit String.format auszugeben fällt mir momentan nicht ein.


----------



## pinsleepe (27. März 2009)

Danke für die Antwort!

Meinst du damit:
die maximale Wortlänge in einer Spalte ermitteln, Spaltenbreite festlegen (in etwa max+3), alle restlichen Worte mit Leerzeichen auf die Breite bringen?
Oder geht es eleganter?

MfG,
pinsleepe


----------



## mirkoku (27. März 2009)

mmhh also ich hab das ganz einfach gelöst


```
public static void main(String[] args) {
		// TODO Auto-generated method stub

		String a1 ="hallo";
		String a2 ="ich";
		String a3 ="bin";	
		
		String b1 ="eine";
		String b2 ="Tabelle";
		String b3 ="und";
		
		String c1 ="das";
		String c2 ="ist";
		String c3 ="gut";
		
		System.out.print(a1+"\t"+a2+"\t"+a3);
		System.out.println();
		System.out.print(b1+"\t"+b2+"\t"+b3);
		System.out.println();
		System.out.print(c1+"\t"+c2+"\t"+c3);
		
	}

}
```

Ausgabe


```
hallo	ich	bin
eine	Tabelle	und
das	ist	gut
```

-> \t ist ein tabulator so kannst du wen die wörter länger sind auch einfach 2 hintereinander machen.

Hoffe ich habs richtiug verstanden was du wolltest 

Gruß


----------



## pinsleepe (27. März 2009)

Hallo mirkoku,
leider nicht ganz. Das Ding mit den Tabs hab ich schon und notfalls habe ich auch \t\t verwendet. Ich wollte aber eine schönere Lösung finden, wo ich nicht bei jedem Wort seine Länge einzeln betrachten muss.

Damit  du verstehst was ich meine: setze
b2 = "hässliche Tabelle";
c2 = "ist auf gar keinen Fall wünschenswert oder"

Dann hast du

```
hallo	ich	bin
eine	hässliche Tabelle	und
das	ist auf gar keinen Fall wünschenswert oder	gut
```


----------



## pinsleepe (27. März 2009)

Ok, ich hab's.
Ich ermittel mir die maximale Stringlänge in einer Spalte (maxLength).
Und dann... reicht einfach  für jeden String oldKey

```
String key = String.format("%-"+maxLength+"s", oldKey);
```
Somit wird jeder String auf die Länge von maxLength gebracht. Der Minus davor heißt, dass die Leerzeichen hinten hinzugefügt werden (Ausrichtung zur linken Seite in der Tabelle).

Danke für Dein Hinweis, zeja!


----------



## mirkoku (27. März 2009)

Also ,

dan zähl alle deine Strings Durch mit,


```
int len = a1.length();
```

und dan vergleiche die zahlen, und von der größten her setzt du dan die anzahl der \t
fest. 

Eine andere möglichkeit fällt mir so sponntan ein aber so gehts aufjedenfall auch ist halt einwenig Fleisarbeit da du viel zum tippen hast.

Gruß

edit:
ok habs zuspät gesehen so gehts natürlich auch


----------



## pinsleepe (30. März 2009)

Hallo,
ich bin's wieder. Kann man mit String.format irgendwie hinbekommen, dass nach einer definierten Länge immer zur neuen Zeile gegangen wird?

LG, 
pinsleepe


----------



## Oliver Gierke (30. März 2009)

http://trac.inamik.com/trac/jtable_format

REINHAUN!


----------



## pinsleepe (30. März 2009)

Danke! Ich werde mir den TableFormatter anschauen!


----------

