我有一个2D数组,代表数独游戏。

我正尝试像典型的数独游戏一样检查游戏中的错误:

在行,列或3x3的正方形内不重复数字(1-9)。
没有空单元格。

我是Java的新手,所以我对此知识很有限。我打算尝试很长的if,else语句来比较所有单元格。那是行不通的,因为重复了-1。 (-1代表一个空的正方形)。我试图解决这个问题,但是意识到这个if语句太乱了,必须有更好的方法。

我现在认为最好的方法是使用嵌套的for循环遍历每一行,每一列和3x3正方形。另一方面,我想检查出是否有空单元格。 (用于在2D数组中检查-1的语句)。

我还考虑将行,col或3x3正方形中的所有数字相加,如果不等于45,那么游戏是否仍未完成?

至于检查重复值,我不确定如何实现嵌套。

编辑:让我澄清一下,我并不是真的想检查每个重复值,我只是希望游戏在存在重复值的情况下保持不完整。 (例如,允许重复值,只是不能像真正的数独游戏那样为您赢得比赛)。我觉得添加到45方法最好。

最佳答案

如果您不检查整个游戏板是否没有所有重复项,而是只在放置新值时检查特定的行,列和3x3正方形是否没有重复项,则可以真正简化事情。播放器,或从文件加载游戏时)。

这样,您只需要三个非嵌套循环。逐一检查新放置的值在其行,列和3x3正方形中是否不存在。

您也不必担心检查-1(假设您已经对值1-9的输入进行了错误检查)。

注意:“检查行,列或3x3正方形加起来是否等于45”不起作用。这是一个不错的主意,但它不会捕获多个重复项(例如,所有5的行都会通过)。

关于java - 比较Java中数组中的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12906762/

10-08 22:45