我有一个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/