2016-04-29 5 views
3

Ich möchte prüfen, ob bestimmte Bereiche des Boards einen bestimmten Wert des Players haben.Gibt es eine Möglichkeit zu überprüfen, ob ein bestimmter Punkt in meinem Array einen bestimmten Char hat?

public boolean diagonal(char[][] theBoard, char thePlayer) { 
    int x = 0; 

    while (x <theBoard.length){ 
     if (thePlayer == theBoard[x][x]) { 
     x++; 
     } 
     else { 
     return false; 
     } 
    } 
+1

Ihre Schleife wird nicht unbedingt immer fertig. – Gendarme

+0

@Gandarme warum nicht? –

+0

Nvm. Mein Fehler. Ich habe es falsch gelesen. – Gendarme

Antwort

1

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.

0
 for(char[] firstarray : theBoard){ 
      for(char ch : firstarray){ 
     boolean matches = (thePlayer == ch) ? true : false; 
     if(matches){ 
     System.out.println("matchFound");   
     }else{ 
     System.out.println("no match"); 
     } 

     } 
     } 

Da Sie ein zweidimensionales Array haben, müssen Sie das Array zweimal durchlaufen. Sie können eine normale for-Schleife bt mit einer verbesserten for-Schleife wird viel einfacher.

0
public boolean diagonal(char[][] theBoard, char thePlayer) { 
     for(int i = 0; I < theBoard.length; i++) 
       for(int j = 0; j < theBoard[i].length; j++) 
         if (thePlayer == theBoard[i][j]) { 
           return = true; 
         } 
     return false; 
} 
Verwandte Themen