所以我有一個java中的多維數組,其中包含一個字符網格。我試圖將字符串匹配到網格中的字符。到目前爲止,我已經實現了從左到右,從右到左,從上到下,從下到上的搜索。他們工作,但不是所有的時間。我在java中查找多維字符數組中的字符串,但是我的搜索在不同字詞的不同字符後停止。爲什麼?
我遇到的問題是讓我們說例如我正在從左到右搜索一個字符串「ALGOS」,它在網格中。它找到一個A,然後找到另一個A,然後找到一個L,然後停止。它應該找到一個A,則L,G,O,S。我得到的錯誤如下:
A Found at: [0, 0]
A Found at: [1, 4]
L Found at: [1, 5]
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
at WordFind00.findWord(WordFind00.java:59)
at WordFind00.main(WordFind00.java:45)
這裏是我的代碼 - 有什麼可以去錯了嗎? 它的一部分被註釋掉,用於測試每個方向。
public static String findWord(char[][]board, String word) {
for (int row = 0; row < board.length; row++) {
for (int col = 0; col < board[row].length; col++) {
if (board[row][col] == word.charAt(0)) {
// search to the right
for (int letters = 0; letters < word.length(); letters++) {
if (word.charAt(letters) == board[row][col+letters]) {
System.out.println(word.charAt(letters) + " Found at: " + Arrays.toString(new int[] {row,col+letters}));
}
} // end search to the right
/*// search to the left
for (int letters = 0; letters < word.length(); letters++) {
if (word.charAt(letters) == board[row][col-letters]) {
System.out.println(word.charAt(letters) + " Found at: " + Arrays.toString(new int[] {row,col-letters}));
}
} // end search to the left
// search down
for (int letters = 0; letters < word.length(); letters++) {
if (word.charAt(letters) == board[row+letters][col]) {
System.out.println(word.charAt(letters) + " Found at: " + Arrays.toString(new int[] {row+letters,col}));
}
} // end search down
// search up
for (int letters = 0; letters < word.length(); letters++) {
if (word.charAt(letters) == board[row-letters][col]) {
System.out.println(word.charAt(letters) + " Found at: " + Arrays.toString(new int[] {row-letters,col}));
}
} // end search down */
}
}
}
return null;
}
如果有人想測試一下: WordFind00.java:http://pastebin.com/DeNEQAsp input.dat:http://pastebin.com/WyYF3wPA
這功課嗎? – Peter 2014-10-10 03:35:11
考慮提供一個[runnable示例](https://stackoverflow.com/help/mcve),它演示了您的問題。這將導致更少的困惑和更好的迴應 – MadProgrammer 2014-10-10 03:36:32
@Peter,是的。我一直困在這個問題一段時間,我無法弄清楚。任何幫助,將不勝感激。 – jdc987 2014-10-10 03:37:16