用于迭代的Java2DIM表
我正在编写一个“数独”程序,我需要编写一个方法来检查用户要插入到某个单元格中的数字是否已经包含在行、列或区域中。我的代码如下所示(此时我只检查行中的数字,setNumber返回一个布尔值,指示是否可以插入该数字):用于迭代的Java2DIM表,java,for-loop,Java,For Loop,我正在编写一个“数独”程序,我需要编写一个方法来检查用户要插入到某个单元格中的数字是否已经包含在行、列或区域中。我的代码如下所示(此时我只检查行中的数字,setNumber返回一个布尔值,指示是否可以插入该数字): public boolean setNumber(int行、int列、int数){ 如果(this.isEmpty(row,column)){ 如果(!this.rowContains(row,number)){ 返回true; }否则{ 返回false; } }否则{ 返回fa
public boolean setNumber(int行、int列、int数){
如果(this.isEmpty(row,column)){
如果(!this.rowContains(row,number)){
返回true;
}否则{
返回false;
}
}否则{
返回false;
}
}
私有布尔行包含(int行,int数){
对于(int i=0;i
现在,同一个数字可以多次插入,因此rowContains显然总是返回false,但是为什么呢?我觉得您的代码片段应该可以工作 好老的println调试应该是你的救星。只需将语句放入代码中,就可以看到发生了什么(例如:) 哪一个在各方面都比
return condition;
如果
setNumber
对canSetNumner
不是一个误称,我希望它包含一个
cells[row][column].setNumber(number);
就在火车站前排队
return true;
setNumber不是一个很好的名称(例如,可以将其命名为checkNumber或canSetNumber)set'应用于具有副作用的方法(在对象中设置值)
您应该确保实际设置了单元格数组中的数字,这可能是您可以在同一行中多次设置的原因。当rowContains返回false时,您返回的是true,这是有意的吗?看起来这可能是问题所在?@Corazu:我觉得这是正确的行为-如果行中没有(false)数字,则插入成功(true)。是的,在这方面是正确的。是的,看起来是这样,但没有:)可能程序的其他部分失败了。我将继续调试…)是的,我忘了在单元格中实际设置数字,如果它是合法的,因为我认为另一个类会这样做,如果这个方法返回true,但事实并非如此。
return condition;
cells[row][column].setNumber(number);
return true;