顺序搜索二维char数组

时间:2014-02-28 02:49:35

标签: java arrays char

我正在使用以下内容:

private char [][] board;
<various lines of code>

//Sequential searching for an index that has yet to be
//changed from the default char character 
for(int i = 0; i< board.length; i++)
    {
        for(int j = 0; j>board[i].length; j++)
        {
            //Here I get the error "incomparable types: char and char[]
            if('\u0000' == board[j])
                    System.out.println("Game unfinished.");                  
        }
     //Here I get the error "incomparable types: char and char[]
     if('\u0000' == board[j])
                 System.out.println("Game unfinished.");
    }
    else return 'T';

本质上,我想遍历数组,做两件事之一:

  1. 如果所有数组索引都被'X'或'O'占用,则返回'T'或
  2. 如果找到带有'\ u0000'的数组索引,请执行:

    System.out.print(“游戏未完成。”);

2 个答案:

答案 0 :(得分:1)

你有两个错误。

首先将j>board[i].length更改为j<board[i].length

然后你必须将char与char进行比较,在2D char中,你必须同时指定维度,获取char,只指定一个意味着你只指定chars的行或列(因此它是char数组)。

比较应如下所示:if('\u0000' == board[i][j])

答案 1 :(得分:1)

首先,您要添加一个空检查,以防万一。然后,修复@libik指示的for条件。最后,通过i和j indecies引用单元格。 e.g:

for(int i = 0; i < board.length; i++) {
        //Always check for nulls, unless you're 100% certain of the data
        if (board[i] != null) {   
          for(int j = 0; j < board[i][j].length; j++) {
              //Here I get the error "incomparable types: char and char[]
              if('\u0000' == board[i][j]) {  
                      System.out.println("Game unfinished.");                  
              }
          }
 }

关于第二个if语句和返回&#39; T&#39;这些不具备意义。你想要回归&#39; T&#39;如果没有&#39; \ u0000&#39;在数组中找到的字符?如果是这样,创建一个布尔标志,将其初始化为false,然后在上面的if语句的else条件下设置它。在循环之外,添加第二个if以查看是否已设置标志并返回&#39; T&#39;。