# Array "automatisch" füllen



## Souljacker (17. Feb 2007)

Hallo!

Ich habe folgendes Problem:

Ich möchte alle Möglichkeiten die ein vierstelliger Code aus Integern (0 bis 5) ergeben kann in ein Array speichern. (Bsp.: 0000, 0001, 0002, ..., 0005, 0010, ... ) 

Das müssten dann 6 hoch 4 Möglichkeiten (=1296) sein.

Ich dachte mir jeden Code speichere ich wieder in ein Array der Länge 4. 
Dazu hab ich mir für meine Klasse den folgenden Konstruktor gemacht:

```
Code(int a, int b, int c, int d) {
      int[] m = new int[4];
      m[0] = a;
      m[1] = b;
      m[2] = c;
      m[3] = d;
  }
```

Jetzt komme ich aber enorm ins Schleudern (ich hab das Gefühl mein Gehirn ist in einer Endloschleife gefangen! )  :wink: 
Ich brauche jetzt also ein mehrdimendionales Array (was ja soweit ich das verstehe ein Array über Arrays ist, oder?) in das ich mittels meines Konstruktors die einzelnen Codes bzw. Arrays einfüge. Aber wie? Oder wäre es besser sowas mit einer LinkedList zu machen?

Kann mir da evtl jemand weiterhelfen?


----------



## Marco13 (17. Feb 2007)

Der Konstruktor wird dir so wie er ist nicht bringen: Der array m[] der darin angelegt wird, wird am Ende des Konstruktors wieder weggeworfen. Der Array müsste ein Member sein

```
class Code {
    int[] m = new int[4];
    Code(int a, int b, int c, int d) {
      m[0] = a;
      m[1] = b;
      m[2] = c;
      m[3] = d;
  }
}
```
Dann könntest du Code-Objekte in eine ArrayList legen - am einfachsten mit sowas wie

```
ArrayList<Code> codes = new ArrayList<Code>();
for (int i=0; i<6; i++)
{
    for (int j=0; j<6; j++)
    {
        for (int k=0; k<6; k++)
        {
            for (int m=0; m<6; m++)
            {
                 codes.add(new Code(i,j,k,m));
            }
        }
    }
}
```
Alternativ kannst du auch einen Array nehmen

```
Code codes[] = new Code[1296];
...
                 int index = 6*(i+6*(j+6*k)))+m; // so in etwa....
                 codes[index] = new Code(i,j,k,m);
```
oder einen 2D-Array aus ints, wenn du keine Code-Objekte verwenden willst.

```
int codes[][] = new Code[1296][4];
...
                 int index = 6*(i+6*(j+6*k)))+m; // so in etwa....
                 codes[index][0] = i;
                 codes[index][1] = j;
                 codes[index][2] = k;
                 codes[index][3] = m;
```


----------



## Souljacker (17. Feb 2007)

Danke für die schnelle Antwort! Hat funktioniert!


----------



## Gelöschtes Mitglied 5909 (17. Feb 2007)

aber NumberFormat und DecimalFormat zum formatieren kennst du?
pack einfach die zahlen in des array und formatier sie danach
for schleife mit i += 5 und bis zu deiner grenze halt + formatieren geht viel einfacher


----------



## Souljacker (17. Feb 2007)

Hmm, hab mir NumberFormat und DecimalFormat in der API angeschaut. Versteh jetzt aber nicht wie ich damit mein Problem lösen kann. Kannst du mir das mal ausführlicher erklären?


----------



## Gelöschtes Mitglied 5909 (18. Feb 2007)

hab die aufgabenstellung missverstanden, sorry 
dachte du willst alle 5er haben und nicht die 0-5er pro stelle


----------

