# Ausgabe in Console formatieren`?



## mobile (6. Apr 2007)

Hi,

kurze Frage. Kann man irgendwie die Ausgabe der Konsole beinflussen? Also ohne \n oder \t. Würde ganz gerne eine Tabelle ausgeben in dieser Form.

Nr.         Interpret               Titel                      Dauer
1            Interpret 1            Lalalalalalalala       3:34

usw...

Nun kann ich zwar mit \t den Abstand einstellen, aber der richtet sich ja immer nach dem was vor ihm steht. Sprich ich bekomme bei verschieden langen Titeln und Interpreten immer eine hässliche versetzte Ausagbe. Gibt es eine Möglichekit. dass man die Abstände vorher fest einstellen kann?

Danke!


----------



## Der Müde Joe (6. Apr 2007)

nein


----------



## JPKI (6. Apr 2007)

nö
Edit: Mist, der Müde Joe war schneller :wink: 
Zweite(r) Edit: Bau dir mittels Swing-Komponentn doch ein Fenster das *so aussieht wie die DOS-Konsole* :bae: :wink: !


----------



## Gast (6. Apr 2007)

zähl die zeichen und rück es dann mit leerzeichen ein


----------



## mobile (6. Apr 2007)

also das mit dem Zeichen zählen könnte man wohl machen, aber das ist doch recht aufwendig oder?


----------



## SlaterB (6. Apr 2007)

nur einmal, dann für das restliche Programm bzw. für fast alle Programme nie wieder,

schreibe dir eine Operation
formatiereStringAufLaenge(String st, int length) // mit kürzeren Namen,
dann musst du nur immer diese aufrufen,

so ein Aufruf statt Stringausgabe ist natürlich immer noch etwas unhandlich, 
mit noch mehr Vorbereitungs-Code wirds weiter einfacher

eine JTable als Vorbild besteht ja auch aus Unmengen Code 
für die Konsole  gibts wenig offiziell vorgegebenes


----------



## mobile (6. Apr 2007)

Naja, danke für eure Tipps, lss mir wohl irgendwas anders einfallen.


----------



## mobile (6. Apr 2007)

Mir ist das grad was eingefallen. Brauche nur noch nen bisschen Hilfe bei der Entwicklung und Umsetzung.

Ich lese ja hier die Strings ein und übergebe sie an MiniDisc.


```
//...
    try {	    	
	 	    for(byte i = 0; i < MAX_TRACK; i++) {	   
	    		System.out.println("Track    : " + (i + 1));
			     
			    System.out.print("Interpret: ");
			    String interpret = din.readLine();
			     
			    System.out.print("Titel    : ");
			    String titel = din.readLine();
					     
			    System.out.print("Dauer    : ");
			    String dauer = din.readLine();
			
			    System.out.println();
			    
			    MiniDisc m = new MiniDisc(i, interpret, titel, dauer);
			    
			    md[MiniDisc.md_nr - 1][i] = m;
	    	}
	    }
//...
```

Ist es nicht möglich befor ich sie an MiniDisc über gebe an eine andere Klasse oder Methode zu übergeben in der ich einfach die Länge der Strings Zähle und dann einfach immer auf die gleiche Länge bringe, so dass sie dann immer gleich sind?

Kann sein, dass das hier vorhin schon mal gesagt wurde so in der Art. Möglich wäre das doch und eignetlich auch mit recht wenig Aufwand oder?

Danke für eure Hilfe!


----------



## The_S (6. Apr 2007)

Evtl. hilft das

http://www.java-forum.org/de/viewtopic.php?t=30004&postdays=0&postorder=asc&start=30


----------



## mobile (6. Apr 2007)

So habe das jetzt so gemacht, funktiniert super:


```
private void format(String interpret, String titel) {
		String tmp = " ";
		final int MAX = 35;
		final int IMAX = 25;
				
		for(this.interpret.length(); this.interpret.length() < IMAX;) {
			this.interpret += tmp;
		}
	    	
	    for(this.titel.length(); this.titel.length() < MAX;) {
	    		this.titel += tmp;
		}
	}
```


----------



## SlaterB (6. Apr 2007)

for(this.interpret.length(); this.interpret.length() < IMAX {
->
for(; this.interpret.length() < IMAX {

->
while(this.interpret.length() < IMAX) {


----------



## Guest (6. Apr 2007)

Warum nicht gleich mit System.out.printf(...) bzw. java.util.Formatter?  :autsch:


----------



## Guest (7. Apr 2007)

Anonymous hat gesagt.:
			
		

> Warum nicht gleich mit System.out.printf(...) bzw. java.util.Formatter?  :autsch:



Weil das Java-printf aus unerfindlichen Gründen das '*' nicht interpretiert:


```
print("%*d", breiteWirdAnSternUebergeben, 42);
```


----------

