Die Liste:
class Knoten
{
public Knoten naechstes, vorher;
public Object element1,element2,element3;
public Knoten(Object obj1,Object obj2,Object obj3)
{
element1 = obj1;
element2 = obj2;
element3 = obj3;
}
}
class Kette
{
public Knoten kopf = new Knoten("kopf","0","0");
public Knoten ende = new Knoten("ende","0","0");
public Kette()
{
kopf.naechstes = ende;
ende.naechstes = null;
kopf.vorher=null;
ende.vorher=kopf;
}
/* Übergeben wird der letzte Knoten = ende*/
public void fuegeVor(Knoten nachfolger, Object neuObj1,Object neuObj2,Object neuObj3)
{
Knoten neuKnoten = new Knoten(neuObj1,neuObj2,neuObj3);
Knoten temp = new Knoten("Temp","0","0");
neuKnoten.vorher=nachfolger.vorher;
nachfolger.vorher=neuKnoten;
neuKnoten.naechstes=nachfolger;
temp=neuKnoten.vorher;
temp.naechstes=neuKnoten;
}
public Object ausgeben(int i,int elem)
{
Object ausgabe=new Object();
int lauf=0;
Knoten aktuellerKnoten=kopf;
for (lauf=1;lauf<=i;lauf++)
{
aktuellerKnoten=aktuellerKnoten.naechstes;
}
if (elem==1) ausgabe=aktuellerKnoten.element1;
if (elem==2) ausgabe=aktuellerKnoten.element2;
if (elem==3) ausgabe=aktuellerKnoten.element3;
return ausgabe;
}
}
Das Ein- und Auslesen:
void openFile(String fileName)
{
File Datei = new File(fileName); // Öffnet eine gegebene Datei.
String text = new String();
double xcoord=0, ycoord = 0;
Kette polylist=new Kette(); /* Die Liste (Anzahlpunkte des Polygons, xcoord-Array, ycoord-Array)*/
int i=0, anzahlpunkte=0, lauf=0;
Integer anzpkt=new Integer(anzahlpunkte); //Umwandlung von integer in Objekt
try
{
BufferedReader zeile=new BufferedReader(new FileReader(fileName));
Anzeige.setText(text); /*Anzeige im Editor Feld -> Zur Kontrolle*/
while(text!=null) /* Solange bis Dateiende*/
{
if ((text = zeile.readLine())!=null)
{
if (text.compareTo("Region 1")==0) //Ist in aktueller Zeile ein Polygon definiert = Region 1
{
i++;
Anzeige.append("\nPolygon "+i);
// Ermittle Anzahl der Punkte : Steht unter Region 1 in 3 Zeichenspalte
text = zeile.readLine();
text=text.substring(2,text.length());
anzahlpunkte=Integer.parseInt(text);
Anzeige.append(" hat "+text+" Punkte\n");
double xcoordarray[]=new double[anzahlpunkte]; //Definition der Arrays für die Koordinaten
double ycoordarray[]=new double[anzahlpunkte];
// Trenne x und y Koordinaten aus String
for(lauf=0;lauf<=anzahlpunkte-1;lauf++)
{
text = zeile.readLine(); // lies gesamte Zeile x y Werte
xcoord=Double.parseDouble(text.substring(0,text.indexOf(" "))); //trennt x Wert und Wandelt ihn in eine Kommazahl um
ycoord=Double.parseDouble(text.substring(text.indexOf(" "),text.length())); // trennt y Wert und Wandelt ihn in eine Kommazahl um
Anzeige.append(xcoord+" | "+ycoord+ " -- ");
xcoordarray[lauf]=xcoord; //Speicher beide Punkte an Position lauf
ycoordarray[lauf]=ycoord;
}
//Polygon in Liste Speichern
anzpkt=new Integer(anzahlpunkte);
// Füge an das Ende der Liste, also vor Ende Knoten
polylist.fuegeVor(polylist.ende,anzpkt,xcoordarray,ycoordarray);
} //Ende Suche: Ist in aktueller Zeile ein Polygon definiert
}
}
zeile.close(); //Datei schliessen
}
catch (IOException e)
{
Anzeige.setText("Fehler beim Öffnen von " + fileName);
}
Anzeige.append("\nStarte auslesen Speicher\n");
Object back=new Object();
back=polylist.ausgeben (1,1);
text=""+back;
back=polylist.ausgeben (2,1);
text=text+" "+back;
back=polylist.ausgeben (3,1);
text=text+" "+back;
Anzeige.append(text);
}// Datei auslesen Ende