Frage zu Arrays

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Kann ich ein 2-dimensionales Array in ein 1-dimensionales Speichern?
Wenn nein, wie wandle ich ein 2-dimensionales Array so um, dass es in ein 1-dimensionales passt?
Ich hoffe ihr könnt mir helfen!
 
Erstmal deklarierst du ein eindimensionales Array und dann ein zweidimensionales array.
Dann machst du folgendes:

Code:
a [0]= b[0][1];
müsste gehen...

Liebe Grüße
Reality
 
Ja, ich habe es versucht aber dann kommt die Fehlermeldung Java.lang.ArrayIndexOutOfBoundsExeption: 3
Dadurch dass ich in ein Feld eines eindimensionalen Arrays ein komplettes 2-dim. speichern will habe ich es so versucht:
Code:
for (int generations = 0; generations < 100; generations++)
{
    spielfeld = nextGeneration(spielfeld);
    for (int i = 0; i < spielfeld[0].length; i++)
   {
        for (int j = 0; j < spielfeld.length; j++)
       {
            menu[generations] = spielfeld[i][j];
        }
    }
    Out.println(menu[generations]);
}

Es geht nämlich um das Spiel GameOfLife, vllt. kennt ihr das, auf jeden Fall muss ich dann ein 1-dim. Array mit der Länge 100 machen und in dieses kommen 100 versch. Spielfelder rein, deren Werte in der Methode nextGeneration berechnet werden.
Und es handelt sich hier um den Typ boolean.
 
Hi,
ArrayIndexOutOfBoundsExeption heisst, dass du ein Array erstellen willst, dass über die Grenzen des initialisierten Array geht.
Wenn du z.B. schreibst:

Code:
int a[]= new int[10];

for (int i=0; i<=10; i++)
{
System. out.println(a[i]);
}

Das funktioniert nicht weil, weil das Array a von 0 beginnt und von 0 - 10 sind es 11 Arrays, also musst du in der for-schleife schreiben: i<=9

Bei deinem Code blicke ich nicht viel durch, weil da noch andere Klassen und Methoden nicht sichtbar sind oder ich habe einfach den Fehler übersehen.

Liebe Grüße
Reality
 
Hier ersteinmal die wichtigste Klasse, die Main Klasse (die anderen funktionieren einwandfrei):
Code:
 public static void main (String[]args)
 {
        boolean [] menu = new boolean [100];
        boolean [][] field1 = readField("Spielfeld.gol");
        printField(field1);
        boolean[][]spielfeld = nextGeneration(field1);
        printField(spielfeld);
        for ( int generations = 0; generations < 100; generations++)
        {
            spielfeld = nextGeneration(spielfeld);
            for (int i = 0; i < spielfeld[0].length; i++)
            {
                for (int j = 0; j < spielfeld.length; j++)
                {
                    menu[generations] = spielfeld[i][j];
                }
            }
            Out.println(menu[generations]);
        }
        
}

Edit:
bei readfield werden bereits vorhandene Werte aus einer Datei eingelesen
bei printfield werden die Felder ausgegeben
bei nextGeneration wird das Spielfeld neu berechnet indem man die Anzahl der Nachbarn berechnet und das Feld entsprechend verändert (mehr als 3 nachbarn feld = false, weniger 2 nachbarn feld = false; wenn das Feld vorher false war und 2 nachbarn hat wird es true) und eben später mit false = . und true = X ausgegeben
 
Hi,
versuch mal den Code:

Code:
            for (int i = 0; i < spielfeld[0].length; i++)
            {
                for (int j = 0; j < spielfeld.length-1; j++)
                {
                    menu[generations] = spielfeld[i][j];
                }
            }
            Out.println(menu[generations]);
        }
        
}

Keine Garantie, bin selbst noch Anfänger.

Liebe Grüße
Reality
 
Ich denke das Hauptproblem ist, dass ich (in meinen Fall) 12 Arrays in eines speichern will, doch ich weiß nicht wie sonst, denn ich brauche ein Menü, wo ich ein Feld vor und züruck gehen kann und wenn ich jetzt auf das 2. gehe muss das Feld in ihrem 2. Zustand zu sehen sein. Beim 10. nach der 10. Veränderung usw.!

@Reality
Ja, ich habe auch erst im September 2003 mit Programmieren angefangen
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben