我有一个数组,打印时打印如下:
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
如何让它像这样打印:
# # # # # # # # # # # #
# 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 #
# # # # # # # # # # # #
我尝试过增大尺寸以容纳额外的字符,但我总是遇到超出范围的异常。我基本上试图获取一个非字母字符来围绕我的数组设置边框,这样当我实现填字游戏解算器时,在周围字母中搜索字母时,它不会触及边界,而是命中非字母字符然后传递 false。
这是我构建数组的代码:
for (int i=1; i<row; i++){
String getChar = (new String(sc.next()));
for(int j = 1;j<col; j++){
puzzle[i][j] = getChar.charAt(j);
}
}
感谢任何帮助!
编辑:这会打印我的数组:
for (int i=0; i<puzzle.length; i++){
System.out.print(Arrays.toString(puzzle[i]));
System.out.println("");
}
EDIT2:这是我的检查方法:
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;
}
最佳答案
不用创建边框,只需检查您要检查的位置是否在数组之外,如果是,那么您就知道您将找不到整个单词,因为我们必须走到外面数组的。
例如,您的数组是 n x n
,如果您尝试访问位置 n
那么它将超出范围,或者如果您尝试访问小于 0 的位置也会出界。因此,只要确保您访问的时间在此范围内即可。
关于java - 向数组添加边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19121535/