抱歉,这个问题无法真正应用于其他人。我已经看了几个小时,但我仍然无法看到它。它必须非常简单,但我无法找到我试图访问不存在的东西的地方。我正在接受
在迭代9x9网格时ArrayIndexOutOfBoundsException。
public ArrayList<Grid> next9Grids()
{
ArrayList<Grid> next9 = new ArrayList<Grid>();//list of new Grids
for(int i = 0; i < values.length; i++){
for(int j = 0; i < values[i].length; j++){
if (values[i][j] == 0){//if empty
for(int next = 1; next <= 9; next++){
Grid temp9 = new Grid(this);//need to make another grid for each #
temp9.values[i][j] = next; // changes value of empty space to 1->9
next9.add(temp9); //add grid to arrayList
}
return next9;
}
}
}
return null;
}
线程中的异常&#34; main&#34; java.lang.ArrayIndexOutOfBoundsException:9 在sudoku.Grid.next9Grids(Grid.java:112)at sudoku.Solver.solveRecurse(Solver.java:54)at sudoku.Solver.solveRecurse(Solver.java:56)at sudoku.Solver.solveRecurse(Solver.java:56)
这是错误的来源。(Grid.java:112)是----&gt; if(values[i][j] ==0){
另一个问题是为什么在第112行访问第二个for循环首先迭代而不是第二个for循环的东西时抛出错误?
非常感谢。感谢您的反馈。
答案 0 :(得分:0)
你在嵌套forloop中的条件是错误的。它应该是j
而不是i
public ArrayList<Grid> next9Grids()
{
ArrayList<Grid> next9 = new ArrayList<Grid>();//list of new Grids
for(int i = 0; i < values.length; i++){
for(int j = 0; j < values[i].length; j++){
if (values[i][j] == 0){//if empty
for(int next = 1; next <= 9; next++){
Grid temp9 = new Grid(this);//need to make another grid for each #
temp9.values[i][j] = next; // changes value of empty space to 1->9
next9.add(temp9); //add grid to arrayList
}
return next9;
}
}
}
return null;
}
答案 1 :(得分:0)
试试这个:
for(int i = 0; i < values.length; i++){
for(int j = 0; j < values[i].length; j++){// replaced j in (i < values[i].length) by i in (j < values[i].length)
if (values[i][j] == 0){//if empty
for(int next = 1; next <= 9; next++){
答案 2 :(得分:0)
在你的代码的第六行中,用j替换i
public ArrayList<Grid> next9Grids(){
ArrayList<Grid> next9 = new ArrayList<Grid>(); //list of new Grids
for(int i = 0; i < values.length; i++){
for(int j = 0; j < values[i].length; j++){ // The change is here
if (values[i][j] == 0){ //if empty
for(int next = 1; next <= 9; next++){
Grid temp9 = new Grid(this);//need to make another grid for each #
temp9.values[i][j] = next; // changes value of empty space to 1->9
next9.add(temp9); //add grid to arrayList
}
return next9;
}
}
}
return null;
}