Array auslesen das als Objekt geliefert wurde

Status
Nicht offen für weitere Antworten.

BuraTino

Neues Mitglied
Hi!

Sitze jetzt schon Stunden und habe folgendes Problem.

Ich übergebe an eine Liste einen -int- Wert und zwei Arrays.

Nun will ich die Listze wieder auslesen!

Die Methode für das Auslesen der Liste gibt das Element 1,2 oder 3 zurück. Also entweder -int-, array oder array!

Den intWert kann ich nur umständlich ermitteln, da back.intValue() nicht funktioniert [Fehler: Symbol kann nicht aufgelöst werden], obwohl back ein Objekt ist der einen integer Wert enthält. Woran liegt das?

Wie greife ich auf die einzelnen Felder der beiden Arrays zu?


Vielen Dank

Gruss BuraTino
 
Vielleicht postest Du ja mal etwas Code, damit man sich mal die Implementierung anschauen kann.
Aber wenn ich Dich richtig verstanden habe, willst Du aus einem Array, welches Objekte verschiedener Datentypen speichert, die Werte auslesen.
In diesem Fall kann der Compiler den Datentyp beim Auslesen/Zugriff auf das Array nicht bestimmen. Du musst ihm daher die Objekte in die richtigen Datentypen casten.
Da Du Objekte verschiedener Datentypen casten müsstest, empfehle ich mit geeigneten Konstrukten/Algorithmen voher festzustellen, von welchem Typ das ausgelesene Objekt ist, bevor Du es weiter verarbeitest. Z.B. in einer if-Schleife mit instanceof.
 
Danke für ein so schnelle reagieren!

Nochmal kurz zum Verständnis:

Ich übergebe an eine Liste die Objekte verwaltet, ein in Integer-Objekt umgewandelten int Wert und zwei arrays.

Beim Auslesen der Liste wird dann ein Objekt zurückgegeben, das auf eines der Listenelemente zeigt.
Also entweder auf das Integer-Objekt oder den 1.Array bzw. den 2. Array.

Nun will ich den Inhalt der Objekte wissen. Wie ist der Int-Wert oder der ArrayWert x vom Typ double.

So hier ein wenig Code:

Code:
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
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben