2次元配列をトラバースしようとしています。現在、char 配列にクロスワード パズルを設定しており、文字の周囲の文字をチェックして、現在探している単語がその最初の文字に接続されているかどうかを確認できる必要があります。必要なジョブを実行するためにブール値メソッドが既に設定されていますが、現在のカウンターが配列の範囲外にあるかどうかを確認する方法があるかどうかを知りたいです。私の配列は次のようになります。
W V E R T I C A L L
R O O A F F L S A B
A C R I L I A T O A
N D O D K O N W D C
D R K E S O O D D K
O E E P Z E G L I W
M S I I H O A E R A
A L R K R R I R E R
K O D I D E D R C D
H E L W S L E U T H
私の現在のコードはこれです:
public static boolean check(int row, int col, String word, char[][] puzzle) {
if(checkRight(row, col, word, puzzle)) return true;
if(checkLeft(row, col, word, puzzle)) return true;
if(checkUp(row, col, word, puzzle)) return true;
if(checkDown(row, col, word, puzzle)) return true;
if(checkNW(row, col, word, puzzle)) return true;
if(checkNE(row, col, word, puzzle)) return true;
if(checkSW(row, col, word, puzzle)) return true;
if(checkSE(row, col, word, puzzle)) return true;
return false;
}
private static boolean checkRight(int row, int col, String word, char[][] puzzle) {
//Checking right direction
for(int letter = 1; letter < word.length(); letter++) {
if(puzzle[row][col + letter] != word.charAt(letter)) {
return false;
}
}
return true;
}
private static boolean checkLeft(int row, int col, String word, char[][] puzzle) {
//Checking left direction
for(int letter = 1; letter < word.length(); letter++) {
if(puzzle[row + letter][col] != word.charAt(letter)) {
return false;
}
}
return true;
}
private static boolean checkUp(int row, int col, String word, char[][] puzzle) {
//Checking up direction
for(int letter = 1; letter < word.length(); letter++) {
if(puzzle[row - letter][col] != word.charAt(letter)) {
return false;
}
}
return true;
}
private static boolean checkDown(int row, int col, String word, char[][] puzzle) {
//Checking down direction
for(int letter = 1; letter < word.length(); letter++) {
if(puzzle[row][col - letter] != word.charAt(letter)) {
return false;
}
}
return true;
}
private static boolean checkSE(int row, int col, String word, char[][] puzzle) {
//Checking diagonals direction
for(int letter = 1; letter < word.length(); letter++) {
if(puzzle[row + letter][col + letter] != word.charAt(letter) && <row<) {
return false;
}
}
return true;
}
private static boolean checkSW(int row, int col, String word, char[][] puzzle) {
//Checking diagonals direction
for(int letter = 1; letter < word.length(); letter++) {
if(puzzle[row + letter][col - letter] != word.charAt(letter)) {
return false;
}
}
return true;
}
private static boolean checkNW(int row, int col, String word, char[][] puzzle) {
//Checking diagonals direction
for(int letter = 1; letter < word.length(); letter++) {
if(puzzle[row - letter][col - letter] != word.charAt(letter)) {
return false;
}
}
return true;
}
private static boolean checkNE(int row, int col, String word, char[][] puzzle) {
//Checking diagonals direction
for(int letter = 1; letter < word.length(); letter++) {
if(puzzle[row - letter][col + letter] != word.charAt(letter)) {
return false;
}
}
return true;
}
}
どんな助けでも大歓迎です!