我正在写一个“数独”程序,我需要写一个方法来检查一个数字,用户想要插入的某个单元格中是否已经包含行、列或区域。我的代码如下所示(此时我只检查行中的数字,setnumber返回一个布尔值,指示是否可以插入该数字):
public boolean setNumber(int row, int column, int number) {
if (this.isEmpty(row, column)) {
if (!this.rowContains(row, number)) {
return true;
} else {
return false;
}
} else {
return false;
}
}
private boolean rowContains(int row, int number) {
for (int i=0; i < this.cells[row].length; i++) {
if (this.cells[row][i].getNumber() == number) {
return true;
}
}
return false;
}
现在,同一个数字可以插入多次,所以显然rowcontains总是返回false,但是为什么呢?
3条答案
按热度按时间mm5n2pyu1#
你的代码片段看起来应该对我有用。
老好人应该是你的救星。只需将语句放入代码中,就可以看到发生了什么(例如:)
这不会解决你的问题,但它会让你更好地了解你的期望在哪里失效。
编辑:我刚刚又看了一遍你的代码,看看是否有什么东西跳到我身上-它没有(我怀疑你的问题在其他地方-你确定你真的设置了每个电话号码吗?)。不过,我注意到一个成语:
哪一个更好呢
以“直接的方式”做事往往被认为是(无论好坏)缺乏经验的开发人员的标志。
thtygnil2#
setnumber不是一个很好的名称(例如,可以将其命名为checknumber或cansetnumber)“set”应用于有副作用的方法(在对象中设置值)。
您应该确保实际设置了单元格数组中的数字,这可能是您可以在同一行中多次设置的原因。
elcex8rz3#
如果
setNumber
不是用词不当canSetNumner
我希望它包含一个就在火车站前排队