Hallo allerseits.
Ich will ein Programm schreiben, mit dem chemische Vorgänge in Form eines Zellulären Automaten simuliert werden.
Dazu gibt es eine (eindimensionale) Reihe, bestehend aus Feldern. Dies wird dargestellt durch einen Array.
Die Felder enthalten jeweils die drei Reaktionpartner Substrat, Aktivator und Inhibitor, alle hergeleitet aus der abstrakten Klasse Komponente.
Nun soll z.B. das Substrat abfragen dürfen, wie hoch die Substratkonzentration auf dem Nachbarfeld ist, etwa in der Form - in der Klasse Substrat :
Die das Substrat hat ja ein Objekt des Feldes, in dem es enthalten ist, als Referenz mitbekommen, dgl. kennt das Feld die Reihe, der es angehört.
Nun aber das Problem :
Wenn z. B. das linke Feld abgefragt werden soll, soll feld[x-1] als Feld-Objekt zurückgegeben werden. Nun behauptet der Compiler, das die Klasse feld ein Array wäre. Ist er aber doch nicht ! Oder ?
Was habe ich falsch gemacht ?
Hier ein Codefragment (mit Fehlermeldung des Compilers ):
Ich will ein Programm schreiben, mit dem chemische Vorgänge in Form eines Zellulären Automaten simuliert werden.
Dazu gibt es eine (eindimensionale) Reihe, bestehend aus Feldern. Dies wird dargestellt durch einen Array.
Die Felder enthalten jeweils die drei Reaktionpartner Substrat, Aktivator und Inhibitor, alle hergeleitet aus der abstrakten Klasse Komponente.
Nun soll z.B. das Substrat abfragen dürfen, wie hoch die Substratkonzentration auf dem Nachbarfeld ist, etwa in der Form - in der Klasse Substrat :
Code:
feld.reihe.linkesFeld(this).subs.getKonzentration();
Die das Substrat hat ja ein Objekt des Feldes, in dem es enthalten ist, als Referenz mitbekommen, dgl. kennt das Feld die Reihe, der es angehört.
Nun aber das Problem :
Wenn z. B. das linke Feld abgefragt werden soll, soll feld[x-1] als Feld-Objekt zurückgegeben werden. Nun behauptet der Compiler, das die Klasse feld ein Array wäre. Ist er aber doch nicht ! Oder ?
Was habe ich falsch gemacht ?
Hier ein Codefragment (mit Fehlermeldung des Compilers ):
Code:
public class Reihe
{
static int anzFelder;
Feld[] feld;
public Reihe(int anzFeld, int anzPix)
{
anzFelder = anzFeld;
feld = new Feld[anzFelder];
for(int x=0; x<anzFelder; x++)
feld[x] = new Feld(x, anzPix, this);
}
public Feld linkesFeld(Feld feld)
{
int x = feld.getX(); // Die Koordinate x des Feldes feld [x] wird abgefragt
x--; // Index des links daneben liegenden Feldes
if(x<0) x=anzFelder-1; // die Enden der Reihe sind verknüpft
return feld[x]; // Compilier-Fehlermeldung
// von Eclipse : "The type of the expression must be an array type but it resolved to Feld"
// von TextPad : "array required, but Feld found"
}
public Feld rechtesFeld(Feld feld)
{
int x = feld.getX();
x++;
if(x> anzFelder-1) x = 0;
return feld[x]; // dieselbe Fehlermeldung
}
}
class Feld
{
static int anzPix;
Reihe reihe;
Komponente subs, akti, inhi;
int x;
public Feld(int x, int anzP, Reihe reihe)
{
this.x = x;
anzPix = anzP;
this.reihe = reihe;
subs = new Substrat(this);
akti = new Aktivator(this);
inhi = new Inhibitor(this);
}
public int getX()
{
return x;
}
}