java - 两个 int 数组的比较结果出乎意料

标签 java arrays memory

我正在尝试比较两个棋盘(由 int[][] 表示)。我也用 C++ 编写了相同的算法,并且比较棋盘的相等性没有任何问题。

我试图在这里发布最相关的代码。关于“二维”数组之间的比较,我是否遗漏了任何 Java 基础知识?或者它可能与内存/存储相关,因为它没有整理出解决方案的重复项?我尝试为列表中的棋盘分配新的内存,但这会导致无限循环。

对于每个迭代和集合,我还使用了多种方法来比较板,甚至使用 .equals、.deepEquals。

这是比较函数的代码片段,用于检查相等性,并在每次镜像和旋转时由 TrulyUnique 函数调用。我正在比较 int[][] 类型的 2 个变量,分别为 storeCurrentBoardplayboard

        int [][] storeCurrentBoard;
        for(int k = 0; k < QList.size(); k++)
        {
            //isPresentinList = true;
            storeCurrentBoard = QList.get(k);

            for(int i = 0; i < playboard.length; i++) 
            {
                for(int j = 0; j < playboard[i].length; j++)
                {
                    if(playboard[i][j] != storeCurrentBoard[i][j])
                    {
                        isPresentinList = false;
                        break;
                    }
                }
            }
        }

最佳答案

您已将 isPresentInList = true 注释掉。取消注释。按照您现在的方式,如果 isPresentInList 被设置为 false,它将始终保持 false,从而使得之后的所有板将始终不相等。

    boolean isPresentInList;
    int [][] storeCurrentBoard;
    for(int k = 0; k < QList.size(); k++)
    {
        isPresentinList = true; //This is necessary for everything to work
        storeCurrentBoard = QList.get(k);

        outer: for(int i = 0; i < playboard.length; i++) 
        {
            for(int j = 0; j < playboard[i].length; j++)
            {
                if(playboard[i][j] != storeCurrentBoard[i][j])
                {
                    isPresentinList = false;
                    break outer;
                }
            }
        }
    }

关于java - 两个 int 数组的比较结果出乎意料,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61599345/

相关文章:

PHP array_slice - 如何获得没有切片项目的原始数组

c++ - 增加堆栈大小以使用 alloca()?

java - 如何使用 Struts2 和 Hibernate 删除和修改数据

Java 字符串拆分为非字母字符

c# - 从字符串 c# 中打印某些数字

c++ - 有没有办法在不定义模板函数的情况下为不同的 std::array 定义函数?

java - 没有 arg 构造函数或 arg 构造函数

java - Maven 在 "mvn site"期间抛出错误,但在 "mvn compile"/"mvn test"下工作正常

c - 为什么这个 C 代码可以工作?未初始化的变量有时已经设置为 0

memory - 内存通常比磁盘快多少?