Da Sie ein mehrdimensionales Array verwenden, versuchen Sie eine verschachtelte For-Schleife.
public boolean diagonal(char[ ][ ] theBoard, char thePlayer) {
boolean result = false;
int x, y; // These will tell you the coordinates of thePlayer if found on theBoard
for(int i = 0; I < theBoard.length; i++)
for(int j = 0; j < theBoard[i].length; j++)
if (thePlayer == theBoard[i][j]) {
result = true;
// Add if you want to know coordinates of the player
x = i;
y = j;
}
return result;
}
Bei einem mehrdimensionalen Array müssen Sie die Werte in der Zeile und in der Spalte kennen. Angenommen, Sie beginnen bei , wenn Sie in einer Schleife setzen und nach theBoard[i] [i]
suchen, werden Sie Zeile 0 Spalte 0 suchen, dann fügen Sie 1 zu i, i++
, jetzt Sie Zeile 1 Spalte 1 betrachten. Sie überspringen alles andere. Deshalb brauchen Sie eine verschachtelte for-Schleife, um über die Zeile und die Spalte zu iterieren.
Blick auf das Beispiel unten ...
0 1 2 3 4 5
0 X X X X X X
1 X X X X X X
2 X X X X X X
3 X X X X X X
4 X X X X X X
5 X X X X X X
Wenn Sie überprüfen wollen, ob theplayer nur in den diagonalen Indizes des Arrays ist, können Sie eine einzelne for-Schleife verwenden.
public boolean diagonal(char[ ][ ] theBoard, char thePlayer) {
boolean result = false;
int x; // This will tell you the coordinates of thePlayer if found on theBoard
for(int i = 0; I < theBoard.length; i++)
if (thePlayer == theBoard[i][i]) {
result = true;
// Add if you want to know coordinates of the player
x = i;
}
return result;
}
Meiner Meinung nach ist es einfacher, eine For-Schleife für solche Dinge zu verwenden. Die while-Schleife ist im Wesentlichen dieselbe Sache, die anders implementiert wird, aber in dieser Situation sieht die for-Schleife sauberer und leichter zu folgen aus. Letztendlich liegt es an Ihnen zu entscheiden, welche für Sie einfacher zu implementieren ist.
Ihre Schleife wird nicht unbedingt immer fertig. – Gendarme
@Gandarme warum nicht? –
Nvm. Mein Fehler. Ich habe es falsch gelesen. – Gendarme