我有两个独立的2D数组。每个包含较小的数组,这些数组是int值对。第一个2D数组是输入信息,另一个2D数组包含要匹配或搜索的值。
例如,输入数组是:
{{0, 1}, {0, 2}, {2, 1}, {1, 0}, {0,1}}
第二个参考数组是第一个值的所有可能组合:
{{0, 0}, {0,1}, {0,2}, {1, 0}, {1, 1}, {1, 2}, {2, 0}, {2, 1}, {2, 2}}
我想获取输入并确定子数组i是否等于任何参考子数组。我希望结果在一维数组中与参考大小相同,并计算在输入数组中找到每个子数组的次数。因此得到的数组应如下所示:
{0, 2, 1, 1, 0, 0, 0, 1, 0}
这是我对代码的尝试:
int[] ResultArray = new int[ReferenceArray.Length];
for (int i = 0; i < ReferenceArray.Length; i++)
{
for (int j = 0; j < InputArray.length; j++)
{
if (InputArray[j] == RefereenceArray[i])
ResultArray[i]++;
}
}
出于某种原因,这会编译,但ResultArray根本没有添加任何内容。当我尝试使用
时Arrays.equal(InputArray[j], ReferenceArray[i])
相反,我在编译时遇到错误。什么出了什么问题?我有一个类似的代码块,工作正常,无法弄清楚问题在这里。
答案 0 :(得分:4)
==
(在Object
类型上)始终测试引用标识。您可以通过更改此
Arrays.deepEquals(Object[], Object[])
if (InputArray[j] == RefereenceArray[i])
类似
if (Arrays.deepEquals(InputArray[j], RefereenceArray[i]))