gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:55:27 24 4
gpt4 key购买 nike

我正在尝试比较两个棋盘(由 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com