Uebung

Status
Nicht offen für weitere Antworten.

renegade

Mitglied
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


Java:
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

Mitglied
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

Mitglied
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

Mitglied
Am besten for oder nach der 42 Zeile ein
Java:
 pw.println("");

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

renegade

Mitglied
danke!!!!! jetzt habe ich es ein bissi umgeschrieben
und jetzt ist alles so wie in der Konsolenausgabe!
many thx
 
Status
Nicht offen für weitere Antworten.

Oben