【发布时间】:2014-11-09 20:54:44
【问题描述】:
所以我必须用 Java 构建一个数独游戏。我可以在我的方法中确认数字 1 到 9 在每行/列中只出现一次。但是,我已将此设置为布尔值,并且我一生都无法弄清楚如何将其转换为整数(以便我可以返回发生错误的行/列)。
public static boolean rowColumnCheck(int[][] array) {
for (int i = 0; i < 9; i++) {
boolean[] rowArray = new boolean[9];
boolean[] columnArray = new boolean[9];
for (int j = 0; j < 9; j++) {
int currentNumberRow = array[i][j];
int currentNumberColumn = array[j][i];
if ((currentNumberRow < 1 || currentNumberRow > 9)
&& (currentNumberColumn < 1 || currentNumberColumn > 9)) {
return false;
}
rowArray[currentNumberRow - 1] = true;
columnArray[currentNumberColumn - 1] = true;
}
for (boolean booleanValue : rowArray) {
if (!booleanValue) {
return false;
}
}
for (boolean booleanValue : columnArray) {
if (!booleanValue) {
return false;
}
}
}
return true;
}
【问题讨论】:
-
你想返回什么值?当有人调用该方法时,他们应该期待什么?将 boolean 转换为 int 似乎不合逻辑;我的意思是,您可以改为返回
-1或1,但此时,您不妨只使用布尔值。它应该返回什么,为什么?通常人们想将String更改为int以用于计算目的,但数字不能像字符串那样表示为布尔值(如上所述,只有 -1 和 1) -
我希望它返回一个整数的原因是因为我想要发生此错误的列/行。我想我可以将返回类型修改为整数。然后,运行 For 循环并返回 For 循环无法成功工作的整数,但我没有任何运气。
-
currentNumberRow和currentNumberColumn对我来说没有意义。您访问array中的值的方式似乎很随机;我不确定为什么[i][j]代表行的值,而[j][i]代表列的值。此外,返回int只会让您返回 1 个值,因此您将无法返回错误发生在哪一行和哪一列;有一些解决方案。 for 循环控制您所在的行/列。j和i正在指定行和列,所以我不确定你为什么需要currentNumberRow和currentNumberColumn -
如果您不确定我对什么感到困惑:另一个
currentNumberColumn代表什么?array中存储了什么?如果它是 sudoki 板的一部分,那么[i][j]和[j][i]正在访问看似随机的值
标签: java int boolean converter 2d-games