2011-06-14 94 views
1

我是一个开垦者,我想知道如果有人能告诉我什么即时通讯这个词搜索做错了吗? 即时通讯卡检查每一行的形式参数中指定的单词,目前它不做任何检查其任何排序其基本布尔方法返回true,如果在数组的行内找到一个单词。假设单词搜索阵列是矩形简单的词搜索Java 2D阵列

public boolean checkRow(char[][] puzzle, String w) 
{ 
    int counter = 0; 
    boolean match = true; 
    for (int row = 0; row < puzzle.length; row++) 
    { 
     counter = 0; 


     for (int col = 0; col < puzzle[row].length; col++) 
     { 
      if (counter <= w.length()) 
      { 
       char word = puzzle[row][col]; 


       if(w.charAt(counter) == word) 
       { 
        match = true; 
        counter++; 
       } 
      } 


      else if ((counter == w.length()) && (match == true)) 
      { 
       return true; 
      } 


      else 
      { 

       match = false; 
       counter = 0; 
      } 



     } 
    } 


    return match; 
} 

回答

2

这里是你的代码更正

public boolean checkRow(char[][] puzzle, String w) { 
    int counter = 0; 
    boolean match = true; 
    for (int row = 0; row < puzzle.length; row++) { 
     counter = 0; 
     match = false; 

     for (int col = 0; col < puzzle[row].length; col++) { 
      if (counter < w.length()) { 
       char word = puzzle[row][col]; 

       if (w.charAt(counter) == word) { 
        match = true; 
        counter++; 
       } else { 
        match = false; 
        counter = 0; 
       } 

       if ((counter == w.length()) && (match == true)) { 
        return true; 
       } 
      } 
     } 
    } 
    return false; 
} 

但这不是最好的方法怎么做你检查,这里是顺利得多,甚至更快(约5倍,我'd测试它)代码

public boolean checkRow2(char[][] puzzle, String w) { 
    String rowStr = null; 
    for(int row = 0; row < puzzle.length; row++) { 
     rowStr = new String(puzzle[row]); 
     if(rowStr.contains(w)) return true; 
    } 
    return false; 
} 
+0

thankyou它实际上工作我猜布尔变量导致错误。不管怎么说,多谢拉 – clfc 2011-06-15 02:36:40