这是我的密码。我的外循环只迭代一次而不是十次。我知道这是因为 System.out.println(i + " " + word)
只发生一次。我不明白为什么。
编辑:我已经添加了我的完整方法,这是包括在。一个程序的一部分,用来创建一个字符数组来进行单词搜索。行数=23。cols=11。word[]是一个数组,它包括输入数组中的每个单词的起始行和列值(如果该单词是水平的还是垂直的),等等。
public static char[][] createPuzzle(int rows, int cols, Word[] words) {
char[][] grid = new char[rows][cols];
for (Word h : words) {
System.out.println(h.getWord());
}
try{
for(int i = 0; i<=9; i++){
String word = words[i].getWord();
System.out.println(i + " " + word);
boolean hor = words[i].isHorizontal();
if (hor == true){
for(int j = 0; j <= word.length(); j++){
grid[words[i].getRow()][words[i].getCol()+j] = word.charAt(j);
}
} else if (hor == false){
for(int k = 0; k <= word.length(); k++){
grid[words[i].getCol()][words[i].getRow()+k] = word.charAt(k);
}
}
}
} catch (StringIndexOutOfBoundsException | ArrayIndexOutOfBoundsException e){
//catches exception
}
return grid;
}
1条答案
按热度按时间bbmckpt71#
这是因为您正在使用以下语法:
发生了什么:
代码中的某个地方引发了异常
StringIndexOutOfBoundsException
或者ArrayIndexOutOfBoundsException
. 这个例外打破了你的习惯for
循环。catch
阻止cathes异常,然后。。。什么都不做,只是无视事实,继续下去。
所以,你至少应该加上这样的东西
在你的
catch
阻止。永远不要忽略例外!