2011-06-14 75 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