# Uebung



## renegade (8. Dez 2009)

Hi Leute,

habe wieder mal ein kleines Problem mit meiner HÜ.
Ich bekomm bei der Ausgabe nur immer einen Wert und zwar sortiert er mir das Stockwerk im Ausgaben File.
Jedoch möchte ich Sortierung der Höhenmeter + Stockwerk haben untereinander wie bei der Ausgabe auf der Console.
Warum gibt er mir bei der Console es richtig, nur beim file schreibt macht er nur das Sortieren von den Stockwerken.

Hoffe ihr könnt mir helfen
vielen dank



```
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;



public class Wolkenkratzer {
	
public static void main (String [] args) {
	// Wolkenkratzer füllen
	ArrayList<Hochhaus> info = new ArrayList<Hochhaus>();
	info.add(new Hochhaus("Millenium Tower" ,  "Wien",  "202m", "050 Stock"));
	info.add(new Hochhaus("IZD Tower",  "Wien", "130m", "037 Stock"));
	info.add(new Hochhaus("Sears Tower",  "Wien", "527m", "110 Stock"));
	info.add(new Hochhaus("Empire State Building",  "New York", "448m", "102 Stock"));
	info.add(new Hochhaus("Burj Dubai",  "Dubai", "818m", "189 Stock"));
	info.add(new Hochhaus("Taipei",  "Taipeh", "508m", "101 Stock"));
	
	Collections.sort(info, new MeterSorter());
	System.out.println();
	System.out.println("Buildings nach Höhenmeter sortiert:");
	for (Hochhaus ho: info)//typ und typname
		ho.drucken();
	

	Collections.sort(info, new StockSorter());
	System.out.println();
	System.out.println("Buildings nach Stockwerken sortiert:");
	for (Hochhaus ho: info)
		ho.drucken();
	
	File f = new File("C:\\programmieren\\Ausgabe\\Uebung9.txt");
	try {
		System.out.println("PrintWriter anlegen");
		PrintWriter pw = new PrintWriter(new FileWriter(f));
		for (Hochhaus ho: info)
			ho.write(pw);
		pw.flush();
		pw.close();
	}
	catch(IOException e) {
		System.out.println(e.getMessage());
	}
	finally {
		System.out.println("PrintWriter abgeschlossen");
	}
} 

}

class Hochhaus{ //class um ein neues Hochhaus anzulegen
	
	protected String name;
	protected String ort;
	protected String meter;
	protected String stock;
	
	public Hochhaus(String n, String o,String m, String s){
		name = n;
		ort = o;
		meter = m;
		stock = s;
		
		
		}
	public void write(PrintWriter pw) {
		pw.println(name + "|" + ort + "|" + meter + "|" + stock + "\t" );
	}
		
	
	public void drucken() {
		System.out.print(name + "|" + ort + "|" + meter + "|" + stock + "\t");
		System.out.println();
		
		
	}
	public String getMeterSorter(){return meter;}
	public String getStockSorter(){return stock;}
}

class MeterSorter implements Comparator<Hochhaus> {
	public int compare(Hochhaus eins, Hochhaus zwei){ return eins.getMeterSorter().compareTo(zwei.getMeterSorter()) * -1;

	}
}

class StockSorter implements Comparator<Hochhaus> {
	public int compare(Hochhaus eins, Hochhaus zwei){ return eins.getStockSorter().compareTo(zwei.getStockSorter()) * 1;
	}
}
```


----------



## Dozor (8. Dez 2009)

jep und zwar hat es damit zu tun das du als letztes den StockSorter über deine Hochhäuser hast laufen lassen damit 
sind Sie nach Stockwerk anzahl sortiert. Um nun auch nach Höhe sortiert ins File zu bekommen solltest du nach der zeile 41
[JAVA=42]
Collections.sort(info, new MeterSorter());
        for (Hochhaus ho: info)
            ho.write(pw);
[/code]
einfügen.
Dann schreibt er dir zuerst nach Stockwerk sortiert und dann nach Höhe ins File.


----------



## renegade (8. Dez 2009)

danke für die schnelle Hilfe, hat gefunkt

jetzt ist es aber alles in einer wurst  wo muss ich system.out.println(); reinmachen, damit es nicht so aufeinander klebt.

zuerst stockwerke und dann höhenmeter mit einer leer Zeile

vielen dank im voraus!!


----------



## Dozor (8. Dez 2009)

Am besten for oder nach der 42 Zeile ein 

```
pw.println("");
```

Wenns geholfen hat gegen einmal Danke-Butten klicken sag ich nicht nein. XD


----------



## renegade (8. Dez 2009)

danke!!!!! jetzt habe ich es ein bissi umgeschrieben
und jetzt ist alles so wie in der Konsolenausgabe!
many thx


----------

