Startposition in Array ermitteln

Status
Nicht offen für weitere Antworten.

Oskar

Aktives Mitglied
Hallo,

stehe gerade ziemlich auf dem Schlauch. Folgendes:

Ich hab ein Array 9 x 9 Felder. Diese Felder können nochmals in 9 Quadrate (3 x 3) eingeteilt werden (Beispiel ;-) ). Nun hab ich in meiner Klasse Chart (repräsentiert das Feld) eine Methode die da lautet
Code:
public IField[][] getSquare(int number)
Square steht hierbei für ein beschriebenes 3 x 3 Quadrat. Die 9 Quadrate sind durchnummeriert von oben links = 0 bis unten rechts = 8. Der Parameter number entspricht der Nummer des gefragten Quadrates.

Nun zur Frage: Wie komme ich am geschicktesten an die vertikale Startposition meines Quadrates?
Ich könnte zwar soetwas machen:
Code:
if(number < 3){
  line = 0;
}elseif(number > 2 && number < 6){
  line = 3;
}elseif(number > 5 && number <9){
  line = 6;
}
Aber irgendwie finde ich das nicht sehr schön. Gibt es hier einen Algorithmus der mir mittels modulo etc. die linie für das Startfeld meines Quadrates gibt? Ich komm nicht drauf.

Für die Spalte sollte das kein Problem sein hier komm ich mittels
Code:
column = (number%3) * 3
ziemlich schnell zum Ziel. Nur fehlt mir halt die Zeile.
Jede Idee ist willkommen.

Cheers
Oskar
 

Oskar

Aktives Mitglied
Ich glaub es ist nicht ganz klar welches Feld ich suche. Daher mal eine kleine ASCII Grafik dazu:
Das Feld das ich brauche als Startfeld für meine Quadrate hab ich mit einem 'X' gekennzeichnet. Die Quadrate sind sonst durchnummeriert.

---------------------------------
| X | 0 | 0 | X | 1 | 1 | X | 2 | 2 |
| 0 | 0 | 0 | 1 | 1 | 1 | 2 | 2 | 2 |
| 0 | 0 | 0 | 1 | 1 | 1 | 2 | 2 | 2 |
---------------------------------
| X | 3 | 3 | X | 4 | 4 | X | 5 | 5 |
| 3 | 3 | 3 | 4 | 4 | 4 | 5 | 5 | 5 |
| 3 | 3 | 3 | 4 | 4 | 4 | 5 | 5 | 5 |
---------------------------------
| X | 6 | 6 | X | 7 | 7 | X | 8 | 8 |
| 6 | 6 | 6 | 7 | 7 | 7 | 8 | 8 | 8 |
| 6 | 6 | 6 | 7 | 7 | 7 | 8 | 8 | 8 |
---------------------------------

Wenn ich nun zum Beispiel 7 als Wert übergeben bekomme möchte ich als Spalte 3 und als Reihe 6 haben. Danach bau ich mir dann den Rückgabewert entsprechend des Quadrates 7 auf.

row = (number/3) * 3 icon_question.gif autsch.gif

Funktioniert... ???:L ..mom.. ???:L ..vermutlich ziemlich gut. Man oh man jetzt wo ich nochmal genauer drüber nachdenke. Das ist ziemlich genau was ich gesucht habe.... :applaus:

Danke. Die Welt kann soo einfach sein.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben