有没有办法可以检查我的数组中的特定点是否有某个字符?

时间:2016-04-29 00:21:31

标签: java

我想查看一下TheBoard的某些区域是否具有某个值的人物。

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

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

3 个答案:

答案 0 :(得分:1)

由于您使用的是多维数组,请尝试使用嵌套for循环。

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;
}

使用多维数组,您需要知道行和列中的值。假设你从i = 0开始,如果你放入一个循环并查找theBoard[i] [i],你将看到第0行col 0,然后你将1添加到i,i++,现在你正在看第1行第1行。你正在跳过其他一切。这就是为什么你需要一个嵌套的for循环迭代行和列。

请看下面的例子......

  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

如果要检查thePlayer是否仅在数组的对角线索引中,可以使用单个for循环。

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;
}

在我看来,对于像这样的东西,使用for循环更容易。 while循环基本上是以不同的方式实现的,但在这种情况下,for循环看起来更干净,更容易理解。最后,由您来决定哪一个更容易实现。

答案 1 :(得分: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");
         }

         }
         }

因为你有一个二维数组,你需要循环数组两次。你可以使用普通for循环bt使用增强的for循环会更容易。

答案 2 :(得分: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;
}