Adjazenzliste leer

Status
Nicht offen für weitere Antworten.

raffi

Mitglied
Hallo, ich kämpfe gerade mit einer Adjazenzlistendarstellung bzw. deren Aufbau. Als Grundlage dient eine txt-Datei, in der in jeder Zeile das erste Wort der Ausgangsort und die nachfolgenden Worte die dazu gehörigen Adjazenten darstellen, getrennt jeweils durch ein Leerzeichen.
Umgesetz habe ich die Adjazenzliste folgendermaßen:
Klasse Knoten
Java:
public class Knoten {
	String stadtName;
	ArrayList<String> liste;
	
	public Knoten (String stadtName) {
		this.stadtName = stadtName;
		liste = new ArrayList<String>();
	}
	
	public String getStadtname () {return stadtName;}
	
	public void setStadtName (String stadtName) {this.stadtName = stadtName;}
}

Nun habe ich in meiner Steuerklasse, genannt Graph, die Datei engelesen und dort auch ein Feld erstellt, in welchem die Ausgangsorte stehen. Eine Feldzelle ist gleichzeitig ein Knotenobjekt mit der ArrayList.
Allerdings zeigt mir die Ausgabe, immer an, das die Adjazenzliste leer ist. Ich frage mich nur warum!?
Graphklasse mit der Einlese- und Ausgabemethode:
Java:
public class Graph {
	FileReader fi;
	BufferedReader bf;
	SimpleInput in;
	StringTokenizer stok;
	Knoten[] staedte;
	Knoten k;
	final int MAXANZ = 50;
	
	public Graph () {
		in = new SimpleInput();
		staedte = new Knoten[MAXANZ];
	}
	
	public void kontrollAusgabe (Knoten[] staedte) {
		int k = 0;
		int j;
		while (staedte[k] != null) {
			System.out.println("Bahnhof: "+staedte[k].getStadtname());
			System.out.print("Adjazenten: ");
			if (staedte[k].liste.isEmpty()) {
				System.out.print("Keine Adjazenten vorhanden.");
			}
			else {
				for (j = 0; j < staedte[k].liste.size(); j++) {
					System.out.print(" "+staedte[k].liste.get(j));
				}
			}
			k++;
			System.out.println();
			System.out.println();
		}
	}
	
	public int suche (String name, Knoten[] staedte) {
		int i = 0;
		while (staedte[i] != null) {
			if (staedte[i].getStadtname().equals(name)) {
				return i;
			}
			i++;
		}
		return -1;
	}
	
	public void einlesen () {
		String line;
		String name;
		int index;
		int i = 0;
		try {
			fi = new FileReader("Strecke.txt");
			bf = new BufferedReader(fi);
			while ((line = bf.readLine()) != null) {
				stok = new StringTokenizer(line);
				name = stok.nextToken();
				k = new Knoten(name);
				staedte[i] = k;
				i++;
			}
			i = 0;
			while ((line = bf.readLine()) != null) {
				while (stok.hasMoreTokens()) {
					index = suche(staedte[i].getStadtname(), staedte);
					if (index >= 0) {
						staedte[i].liste.add(staedte[index].getStadtname());
						i++;
					}
				}
			}
			kontrollAusgabe(staedte);
		}
		catch (Exception e) {
			System.out.println("Fehler: "+e.getMessage());
		}
	}
	
	public static void main (String args[]) {
		Graph r = new Graph();
		r.einlesen();
	}
}

Vielen Dank schonmal ;D
mfg
 

Marco13

Top Contributor
while ((line = bf.readLine()) != null) {
while (stok.hasMoreTokens()) {


Dazwischen müßte vielleicht ein
stok = new StringTokenizer(line);
stehen... Ansonsten mach' mal ein paar Debug-Ausgaben...
 

raffi

Mitglied
Also das stok = new StringTokenizer(line) hatte ich ntaürlich vergessen. Habe ich jetzt ergänzt, aber er gibt mir trotzdem eine leere Adjazenzliste aus.
Beim Debugging geht er garnicht in die zweite while-Schleife (Zeile 62)
Java:
while ((line = bf.readLine()) != null)
rein, da für ihn wahrscheinlich da immer null auftritt. Aber warum? Liegt es daran, das ich direkt obendrüber die Datei schon einmal durchlaufen habe?

mfg
 
G

Gelöschtes Mitglied 5909

Gast
weil du zwei mal die gleiche schleife hast

er rennt ein mal durch die datei und ist am ende

mit dem stringtokenizer machst du bis dahin nichts, sondern erst in der zweiten schleife
die wird nicht gestartet weil er keine zeilen hat, da er schon am ende ist

-> du brauchst 2 inneinander verschachtelte while schleifen und nicht drei

-> nehm am besten String[] tokens = line.split(" "); statt denn Tokenizer, der ist glaub ich eh schon deprecated

// edit: ne ist nicht deprecated, ich würde aber trotzdem String#split nehmen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Adjazenzliste Java Basics - Anfänger-Themen 13
H Adjazenzliste - Datenstruktur aber wie? Java Basics - Anfänger-Themen 7
M Adjazenzliste Java Basics - Anfänger-Themen 35
H Überprüfen ob String Array leer ist Java Basics - Anfänger-Themen 4
cmn489 Werte beim Funktionsaufruf in ein Feld übertragen(falls dieses leer ist) Java Basics - Anfänger-Themen 1
J Ist es möglich einen int Array wirklich leer zu initialisieren oder zu füllen? Java Basics - Anfänger-Themen 21
L Enumeration Wetter - leer initialiseren? Java Basics - Anfänger-Themen 5
D Warum nicht true wenn Array leer ist? Java Basics - Anfänger-Themen 8
J SVN Repository Prüfung ob leer ist Java Basics - Anfänger-Themen 23
Aruetiise Variablen Array ist leer? Java Basics - Anfänger-Themen 6
S Prüfen ob Zelle in Excel leer ist funktioniert nicht (Apache POI) Java Basics - Anfänger-Themen 18
MiMa Leere Datei ist nicht Leer ?? Java Basics - Anfänger-Themen 6
F Erste Schritte Unterschied: Array "leer" / "null" Java Basics - Anfänger-Themen 3
M Ausgabe eines txt Dokuments, Dokument leer Java Basics - Anfänger-Themen 1
M Felder leer - überprüfen? Java Basics - Anfänger-Themen 2
D In Arrayfeld schreiben wenn leer Java Basics - Anfänger-Themen 8
K Methoden ResultSet als Methodenübergabewert kommt leer an Java Basics - Anfänger-Themen 0
Z JPanel bleibt leer Java Basics - Anfänger-Themen 2
S TextFieldFilter - Wenn Textfeld leer dann setze 0 Java Basics - Anfänger-Themen 9
W Erste Schritte Array[0] ist leer ? Java Basics - Anfänger-Themen 4
M Falls ---.getText == leer Problem! Java Basics - Anfänger-Themen 9
A Klassen JTextField eigtl leer aber es werden Methoden ect. angezeigt Java Basics - Anfänger-Themen 9
F JNumberField leer? Java Basics - Anfänger-Themen 16
X Array leer Java Basics - Anfänger-Themen 15
H Input/Output Testen ob Datei leer Java Basics - Anfänger-Themen 14
B getInputStream() - auslesen bleibt leer Java Basics - Anfänger-Themen 2
P While schleife: Konsole bleibt leer :D Java Basics - Anfänger-Themen 5
S Prüfen,ob array leer ist Java Basics - Anfänger-Themen 15
B Process.getInputStream immer leer Java Basics - Anfänger-Themen 3
F Eigene Exception StackTrace und Message ist leer warum??? Java Basics - Anfänger-Themen 3
G Integer auf Leer überprüfen Java Basics - Anfänger-Themen 44
reno Testen ob String leer ist Java Basics - Anfänger-Themen 12
D Drucken - Seite leer Java Basics - Anfänger-Themen 2
U Animation bleibt leer (weiß) Java Basics - Anfänger-Themen 5
P Prüfen ob alle zellen der tabelle leer sind Java Basics - Anfänger-Themen 9
H Datei nach serialisieren leer ? Java Basics - Anfänger-Themen 10
G jede 2te zeile in vector leer einfügen, wie? Java Basics - Anfänger-Themen 4
G Table bleibt leer :( Java Basics - Anfänger-Themen 12
M Feststellen, das Textboxen leer sind! Java Basics - Anfänger-Themen 3
M String ist leer Java Basics - Anfänger-Themen 14
B Zip ist leer Java Basics - Anfänger-Themen 5
B Datei leer? Java Basics - Anfänger-Themen 6
E Probleme bei Stringvergleich, leer String = gefülltem String Java Basics - Anfänger-Themen 2
S Array bleibt leer, wo liegt mein Fehler? Verzeichnisinhalt s Java Basics - Anfänger-Themen 8
K Variable leer oder nicht Java Basics - Anfänger-Themen 4
C checken ob ein Vektor leer ist Java Basics - Anfänger-Themen 3
A Fenster bleibt leer und schließt sich nicht Java Basics - Anfänger-Themen 26
P Fragen, ob Eingabefeld leer ist oder nicht Java Basics - Anfänger-Themen 2
G jComboBox zunächst leer Java Basics - Anfänger-Themen 6
R Zeile leer lassen Java Basics - Anfänger-Themen 2
V JList(s) leer sobald ein Eintrag in 2+ Listen gewählt wird Java Basics - Anfänger-Themen 3
H Übergabe eines Wertes an eine Bean --> Bean leer Java Basics - Anfänger-Themen 6
K Prüfen, ob Queue leer ist Java Basics - Anfänger-Themen 5
G Mein Array bleibt immer leer????????? Java Basics - Anfänger-Themen 8
S Datei nach FileOutputStrem leer, warum ? Java Basics - Anfänger-Themen 2
G Variablen werden leer ausgelesen (Wert wurde zugewiesen) Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben