Methoden Alle Objekte der ArrayList ausgeben funktioniert nicht.

G

.getHilfe()

Gast
Ich habe die Aufgabe, eine vorher zu befüllende Arrayliste auszugeben.
Die Objekt-Klasse mit der ich das Array befülle lautet
Java:
public class Land {
	
	private String name;
	private String hauptstadt;
	private int einwohnerzahl;
	private int flaecheInQKM;

	public Land(String name, String hauptstadt, int einwohnerzahl,
			int flaecheInQKM) {
		this.name = name;
		this.hauptstadt = hauptstadt;
		this.einwohnerzahl = einwohnerzahl;
		this.flaecheInQKM = flaecheInQKM;
public void ausgabe() {
		System.out.println(name + "," + hauptstadt + ","
				+ einwohnerzahl + "," + flaecheInQKM);

Ich habe eine Testklasse erstellt, und dass ausgeben von spezifischen Ländern funktioniert so, wie ich es mir vorgestellt habe.

Jetzt wird in LandVerwaltung eine Methode liesDaten erstellt,
Java:
ArrayList<Land> laender = new ArrayList<Land>();
public void liesDaten(ArrayList<Land> liste, String dateiname) {
		try {
			BufferedReader in = new BufferedReader(new FileReader(dateiname));
			String zeile = null;
			while ((zeile = in.readLine()) != null) {
				String[] temp = zeile.split(";");
				int w = Integer.parseInt(temp[2]);
				int e = Integer.parseInt(temp[3]);

				//Hier bin ich etwas unsicher, ob die benennung "x" später eine Rolle spielt
				Land x = new Land(temp[0], temp[1], w, e);
				laender.add(x);
				
				//x.ausgabe();  
                               //Ich erhalte alle Länder, sobald ich die Methode ausgabe auf diese Art einbaue, dies entspricht aber nicht der Aufgabenstellung.

			}

		} catch (IOException e) {
			e.printStackTrace();
		}

	}
(welche ich ebenfalls erfolgreich getestet habe ) um ein Array in einer while-schleife mit Objekten des typs Land aus einer textdatei zu füllen.
Java:
public class Hausarbeit {
public static void main (String []args){
	Hausarbeit meineHausarbeit = new Hausarbeit ();
		
	
		
		
		meineHausarbeit.aufgabe2 ();
}
	

public void aufgabe2 (){
	ArrayList<Land> laender = new ArrayList<Land>();
	String dateiname = "(korrekter dateipfad)" ;
	LandVerwaltung meineLandVerwaltung = new LandVerwaltung ();
	meineLandVerwaltung.liesDaten(laender, dateiname);
	meineLandVerwaltung.selectionSort(laender);

//und hier kommt das Problem! Ich würde gerne die nun sortierte Liste wieder in der Konsole ausgeben, ich habe es auch schon mit for-each probiert. Irgendwie erscheint aber nichts in der Konsole, benutze ich die liste.get(int) methode falsch?
	for(int g = 0; g < laender.size(); g++){
    laender.get(g).ausgabe();}

 
    }
}

Am Ende erhalte ich keine Ausgabe in der konsole, obwohl ich eigentlich dachte, dass ich über die for-schleife und den get() befehl an alle einträge der Liste herankomme. Bin ratlos. Dies ist die letzte Aufgabe die mir zur Fertigstellung meiner Hausarbeit fehlt, also wäre ich für Hilfe sehr dankbar.
 

Fant

Bekanntes Mitglied
Die Liste, die du am Ende ausgibst, ist leer.
In der Methode liesDaten füllst du eine Liste, aber nicht die, die du in der Methode aufgabe2 angelegt hast und später ausgeben willst..
 

Kiri

Bekanntes Mitglied
Deine liesDaten-Methoden muss die ArrayList zurückgeben.
Java:
public ArrayList<Land> liesDaten(ArrayList<Land> liste, String dateiname) {
   .
   .
   .
   return laender;
}

Und in deiner Aufgabe 2 speicherst du den Wert einfach wie folgt:
Java:
laender = meineLandVerwaltung.liesDaten(laender, dateiname);
 
T

troll

Gast
frage : warum parameter List<?> "liste" wenn diese überhaupt nicht verwendet wird ?
lösung : raus damit ...
 
G

.getHilfe()

Gast
Danke für die Hilfe, mein Problem wäre gelöst, allerdings hat sich jetzt ein Folgeproblem aufgetan :(, welches ich vorher nicht erkannt habe.
Ich soll die Liste zuert unsortiert, dann sortiert ausgeben. Jedoch habe ich anscheinend eine endlosschleife oder sowas in meiner sortiermethode, denn das programm hört nicht auf zu arbeiten, gibt aber nie eine zweite liste aus :( .

Wenn noch jemand einen Anstoss für mich hat, oder sieht dass ich totalen Mist gebaut hab, schreibt mir das bitte :p

Also ich poste hier jetzt die überarbeitete Aufgabe 2 , dann die sortiermethode.
(Liegt der fehler darin, dass die sortiermethode ohne return anweisung ist ? falls ja hab ich ein problem, denn das Diagramm, welches ich benutzen muss gibt mir void in diesem falle vor )
Java:
public void aufgabe2 (){
	ArrayList<Land> laender = new ArrayList<Land>();
	String dateiname = "C://Users//Dennis B//Eclipse//Land.txt" ;
	LandVerwaltung meineLandVerwaltung = new LandVerwaltung ();
	laender = meineLandVerwaltung.liesDaten( dateiname);
	for(int g = 0; g < laender.size(); g++){
	    laender.get(g).ausgabe();}
	meineLandVerwaltung.selectionSort(laender);
	for(int g = 0; g < laender.size(); g++){
    laender.get(g).ausgabe();}
und hier jetzt vergleiche (aus der klasse land) ,tausche (aus landverwaltung) und sortiere(auch in landverwaltung) :
Java:
public boolean vergleiche(Land vergleichsLand) {
		if (getName().compareTo(vergleichsLand.getName()) > 0) {
			return false;
		} else {
			return true;
		}
Java:
public void tausche(int a, int b, ArrayList<Land> laender) {
		Land tmp = laender.get(a);
		laender.set(a , laender.get(b));
		laender.set(b , tmp);

	}

	public void selectionSort(ArrayList<Land> laender) {
		int n = laender.size();
		int links = 0;
		while (links < n) {
			int min = links;
			for (int i = links + 1; i < n; i++) {
				laender.get(min).vergleiche(laender.get(i));
				if (true) {
					min = i;
				}
				tausche(min, links, laender);
				links = links + 1;

			}

		}
	}

danke nochmal für die bisherige hilfe, alleine wäre ich da nicht drauf gekommen !
 

insane80

Aktives Mitglied
Das Problem wird vermutlich da liegen, denn dein if wird immer ausgeführt, da du das Ergebnis aus
Java:
laender.get(min).vergleiche(laender.get(i));
nicht zuweist.

Java:
	...
				laender.get(min).vergleiche(laender.get(i));
				if (true) {
					min = i;
				}
				tausche(min, links, laender);
				links = links + 1;

			}

		}
	}

danke nochmal für die bisherige hilfe, alleine wäre ich da nicht drauf gekommen !
 
G

.getHilfe()

Gast
Da bin ich gerade sehr unsicher :/
Java:
for (int i = links + 1; i < n; i++) {
				if (laender.get(min).vergleiche(laender.get(i)) == true) {
					min = i;
				}
				tausche(min, links, laender);
				links = links + 1;

			}
wäre es in Ordnung das so zu machen ?
Das würde aber dem Diagramm das mir vorliegt widersprechen, und ein Ergebniss erhalte ich da auch nicht :(

Ich bin aber auch gerade furchtbrar blind irgendwie, ich hab da Stundenlang dran gebastelt an der Hausarbeit, und vielleicht kennt ihr das , aber wenn man sich das selbstgeschriebene durchliest, sieht man einfach die Fehler nicht , selbst wenn man es Wort für Wort abarbeitet :/
 

insane80

Aktives Mitglied
Klar kann man das machen :) Geht auch so
Java:
if (laender.get(min).vergleiche(laender.get(i)))...
Wieso widerspricht das den Vorgaben?

Nutzt du eine IDE? Dann könntest du dir z. B. auch die einzelnen Schritte im Debugger ansehen und kucken, was passiert und so den Fehler finden.
 
G

.getHilfe()

Gast
Ne widerspricht es gar nicht, ich hab da nur was falsch verstanden.
Ok, soweit so gut.
Nurleider hört das programm immernoch nicht auf zu arbeiten und gibt keine 2. Liste aus :_( .
Ich benutze eclipse, aber keine ahnung wie der debugger funktioniert, ich bin da absoluter anfänger, hab den noch nie benutzt.
Ich lass es mal ein paar minuten arbeiten, vielleicht ist die suchmethode irgendwie aufwändig und es braucht deswegen länger xD .
Ich bin ratlos, mich ärgert vor allem,dass ich endlich fertig wär, aber bei dem problem einfach nicht die Lösung finde.
 

insane80

Aktives Mitglied
Wenn du magst, kannst du ja die Klassen mal als ZIP anhängen, dann lässt sich einfacher drüberschaun als hier im Thread. Dann könnte ich dir noch einen Tipp geben.
 
Zuletzt bearbeitet:

Kiri

Bekanntes Mitglied
habe es nur überflogen, aber ich denke das
Java:
	public void selectionSort(ArrayList<Land> laender) {
		int n = laender.size();
		int links = 0;
		while (links < n) {
			int min = links;
			for (int i = links + 1; i < n; i++) {
				laender.get(min).vergleiche(laender.get(i));
				if (true) {
					min = i;
				}
				tausche(min, links, laender);
				links = links + 1;

			}

		}
	}

müsste so ausehen:
Java:
    public void selectionSort(ArrayList<Land> laender) {
        int n = laender.size();
        int links = 0;
        while (links < n) {
            int min = links;
            for (int i = links + 1; i < n; i++) {
                laender.get(min).vergleiche(laender.get(i));
                if (true) {
                    min = i;
                }
                tausche(min, links, laender);
            }
            links = links + 1;//bzw. besser links++;
       }
    }
 
G

.getHilfe()

Gast
Danke Danke , jetzt gibt eclipse ne zweite liste aus !
Ich bin zwar etwas verwirrt, warum diese so aussieht wie sie es tut, aber vielleicht verstehe ich einfach compareTo() falsch.
Ich denke ab hier kann ich die letzten Feinheiten selbst erledigen, danke nochmal !
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D X Werte in ArrayList von Point Objekte alle gleich ? Java Basics - Anfänger-Themen 11
B Klassen Alle Unter-Objekte durchlaufen in der Hauptklasse Java Basics - Anfänger-Themen 10
F Alle Objekte einer Klasse nach Eigenschaft durchsuchen Java Basics - Anfänger-Themen 8
G Alle Objekte und Variablen automatisch ausgeben Java Basics - Anfänger-Themen 7
S Deserialisieren: alle Objekte ausgeben - wie mache ich das? Java Basics - Anfänger-Themen 2
F [Hibernate] Alle Objekte laden aus der DB laden Java Basics - Anfänger-Themen 6
G KeyListener auf alle Objekte beziehen Java Basics - Anfänger-Themen 9
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
B Alle Strings bis zu einer Maimallänge aufzählen, die Bedingung erfüllen Java Basics - Anfänger-Themen 13
D Apache HTTPClient für alle Fälle Java Basics - Anfänger-Themen 41
missy72 Methoden Alle rekusiven Aufrufe abbrechen Java Basics - Anfänger-Themen 21
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
B Alle Zahlen finden, die 3 bestimmte Ziffern enthalten? Java Basics - Anfänger-Themen 9
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
Butzibu Image Loader lädt nicht alle Bilder: Java Basics - Anfänger-Themen 4
sserio Wieso werden nicht alle Primzahlen bis 1000 in meine Liste gepackt ? Java Basics - Anfänger-Themen 8
E Select nimmt nicht alle Where /AND befehlen an Java Basics - Anfänger-Themen 4
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
R Methoden Eclipse schlägt mir nicht alle Möglichkeiten vor Java Basics - Anfänger-Themen 4
melisax Alle Möglichkeiten eines Wortes angeben Java Basics - Anfänger-Themen 3
B Programm, dass alle 3 Tage eine Webseite öffnet? Java Basics - Anfänger-Themen 20
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
J Alle Dateien aus einem Verzeichnis laden Java Basics - Anfänger-Themen 10
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
crrnogorka Letzte Zeile einer Tabelle "überschreibt" alle anderen Zeilen Java Basics - Anfänger-Themen 1
C alle möglichen Kombinationen zweier Ziffern auf drei / vier / und 'n" Stellen Java Basics - Anfänger-Themen 11
H Alle Geraden zahlen bis 10 ausgeben Java Basics - Anfänger-Themen 11
L Alle Ziele in einem Raster abknallen Java Basics - Anfänger-Themen 17
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
K Array alle Werte aufsummieren und ausgeben Java Basics - Anfänger-Themen 6
Dimax Erste Schritte String replace alle Zeichen Java Basics - Anfänger-Themen 10
L Wie vergrößere ich ein Rechteck in alle Richtungen um eins und bekomme dessen Rand? Java Basics - Anfänger-Themen 2
L Breadth-First Search statt einem Pfad, alle Pfade herausfinden Java Basics - Anfänger-Themen 4
X Erste Schritte String: Alle doppelten Leerzeilen entfernen Java Basics - Anfänger-Themen 21
M Regex-Ausdruck: Alle Zeichen bis auf ein bestimmtes erlauben (p{L}) Java Basics - Anfänger-Themen 5
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
Kirby.exe Alle möglichen Error Möglichkeiten abfangen Java Basics - Anfänger-Themen 33
M Unterklasse soll nicht alle Methoden erben Java Basics - Anfänger-Themen 3
V Erste Schritte for-Schleife; Ausgabe soll alle 5 Sekunden erfolgen. Java Basics - Anfänger-Themen 4
A Alle true Werte eines boolean Arrays herausfiltern Java Basics - Anfänger-Themen 19
D Alle Möglichkeiten, n-Anzahl aus Elementen aus einem Array zu wählen, ausgeben? Java Basics - Anfänger-Themen 23
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
F Alle Zeichenkombinationen eines Strings iterativ herausfinden Java Basics - Anfänger-Themen 26
L Classpath Alle Dateien im Classpath finden Java Basics - Anfänger-Themen 4
G Überprüfen ob alle Ziffern von 1-9 in einem Integer vorhanden sind Java Basics - Anfänger-Themen 6
J Erste Schritte Alle möglichen ausgaben von 5 Zahlen als Vector Java Basics - Anfänger-Themen 7
R Methoden Entferne alle identische Knoten (Typ String) aus verkettete Liste Java Basics - Anfänger-Themen 8
D Methoden Eigene Methode um alle Ausgaben aufzurufen Java Basics - Anfänger-Themen 17
F Ordner auf alle Unterdatein abfragen Java Basics - Anfänger-Themen 3
A In einem String alle Eigennamen zählen Java Basics - Anfänger-Themen 6
W ArrayList löscht alle Elemente bis auf eines Java Basics - Anfänger-Themen 2
B Webservice -> alle parameter bekommen von form Java Basics - Anfänger-Themen 2
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
C HashMap - alle keys haben values der letzten put-Anweisung Java Basics - Anfänger-Themen 3
F Eclipse alle Projekt weg Java Basics - Anfänger-Themen 6
V Alle Komponenten eines JPanels Java Basics - Anfänger-Themen 14
I gemeinsame Config-Datei für alle Windows-User Java Basics - Anfänger-Themen 5
H JButton - Wechsel der Textfarbe alle 500ms Java Basics - Anfänger-Themen 10
DaCrazyJavaExpert Alle Zahlenkombinationen aus 9 zahlen finden Java Basics - Anfänger-Themen 17
M Alle Instanzen einer Klasse ansprechen Java Basics - Anfänger-Themen 4
S Problem: Array alle Einträge gleich Java Basics - Anfänger-Themen 10
Z Enter Taste alle 0,5 Sekunden ausführen Java Basics - Anfänger-Themen 1
U RegEx alle Kommas bei den Zahlen in Punkt umwandeln Java Basics - Anfänger-Themen 3
K alle Vorkommen einer bestimmten Ziffer in einer Zahl zählen Java Basics - Anfänger-Themen 2
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1
C Alle Zweierpotenzen bis 2^10 ausgeben lassen Java Basics - Anfänger-Themen 15
B Alle Attribute von Klasse bekommen und ändern Java Basics - Anfänger-Themen 12
M Input/Output Alle Zeilen auslesen und in Variable speichern Java Basics - Anfänger-Themen 5
W Mozilla Thunderbird email an alle Kontakte Java Basics - Anfänger-Themen 3
F Methode alle 15min ausführen Java Basics - Anfänger-Themen 5
D Alle möglichen Kombinationen in einem Array ausgeben Java Basics - Anfänger-Themen 2
I Alle Laufwerke und deres Pfade ausgeben Java Basics - Anfänger-Themen 6
S Classpath: Alle .jars innerhalb eines Ordners einbinden Java Basics - Anfänger-Themen 4
I Programm, welches eine Textzeile einliest und alle darin enthaltenen Buchstaben umwandelt Java Basics - Anfänger-Themen 3
G Wie bekomme ich alle Ausgaben von runTime.exec() Java Basics - Anfänger-Themen 7
L Best Practice Alle Kombinationen aus Listenelementen, Anzahl Listen unterschiedlich Java Basics - Anfänger-Themen 6
M Compiler-Fehler Alle Methoden eines Interfaces Implementiert dennoch Fehler Java Basics - Anfänger-Themen 3
I Alle Zeitzonen in Liste speichern Java Basics - Anfänger-Themen 4
F alle 100ms Befehle ausführen Java Basics - Anfänger-Themen 26
M Alle Sublisten einer bestimmten Laenge berechnen Java Basics - Anfänger-Themen 2
F Alle DEMOS fast veraltet...? Java Basics - Anfänger-Themen 13
J Alle Leerzeichen aus String entfernen Java Basics - Anfänger-Themen 13
D Methoden Alle Siebenstelligen Primpalidrome von PI Java Basics - Anfänger-Themen 6
K Durch alle Attribute eines Objektes iterieren Java Basics - Anfänger-Themen 6
P Klassen Alle Strings einer ArrayList<eigeneKlasse> anspre Java Basics - Anfänger-Themen 2
W String von hinten alle drei Zeichen abschneiden und in umgekehrter Reihenfolge ausgeben. Java Basics - Anfänger-Themen 9
M Stürzen alle Rekursive Methoden irgendwann ab? Java Basics - Anfänger-Themen 11
M Alle möglichen Strings Java Basics - Anfänger-Themen 5
J Alle Wörter der Länge n mit 0 und 1 Java Basics - Anfänger-Themen 17
T Alle Threads .notify() Java Basics - Anfänger-Themen 13
N Klassen Class nur einmal ausführen und sie speichert daten für alle anderen classes? Java Basics - Anfänger-Themen 3
M Klassen Auf Alle Array Methoden gleichzeitig zugreifen Java Basics - Anfänger-Themen 8
D Frame schließt gleich alle Frames Java Basics - Anfänger-Themen 5
T Wie mache ich einen Timer der alle 2 sekunden aufgerufen wird? Java Basics - Anfänger-Themen 5
G JFileChooser "alle Dateien" unterbinden Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben