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
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:
Vielen Dank schonmal ;D
mfg
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