Array "automatisch" füllen

Status
Nicht offen für weitere Antworten.

Souljacker

Mitglied
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:
 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?
 
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
Code:
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
Code:
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:
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.
Code:
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;
 
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
 
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?
 
hab die aufgabenstellung missverstanden, sorry 🙂
dachte du willst alle 5er haben und nicht die 0-5er pro stelle
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben