Java 比较不同对象类型的二维数组

Java 比较不同对象类型的二维数组,java,arrays,for-loop,multidimensional-array,comparison,Java,Arrays,For Loop,Multidimensional Array,Comparison,我已经编写了一个方法来比较不同的2D数组,并使用.equals输出它们是否相同。在我的主tester类中,我比较了两个相同的2D整数数组,因此输出应该为“true”,然后比较了两个不同的2D字符串数组,因此输出应该为false。当测试不同的组合时,当我测试相等和不相等的整数数组时,我得到了正确的输出。测试不同大小的数组,正确的输出和测试相等的字符串数组,我得到了正确的输出 我遇到的问题是,当我测试两个不相等的字符串数组时,当它们不相等时,程序返回true,因此输出应该为false。提前感谢您的帮

我已经编写了一个方法来比较不同的2D数组,并使用.equals输出它们是否相同。在我的主tester类中,我比较了两个相同的2D整数数组,因此输出应该为“true”,然后比较了两个不同的2D字符串数组,因此输出应该为false。当测试不同的组合时,当我测试相等和不相等的整数数组时,我得到了正确的输出。测试不同大小的数组,正确的输出和测试相等的字符串数组,我得到了正确的输出

我遇到的问题是,当我测试两个不相等的字符串数组时,当它们不相等时,程序返回true,因此输出应该为false。提前感谢您的帮助或提示

公共布尔等于(对象[]其他){
布尔相等=假;
if(myArray.length!=其他.length){
回报均等;
}
for(int i=0;i
测试:

公共类twodtest{
公共静态void main(字符串[]args){
//初始化数组
整数[][]firstArray={{2,3},{3,4},{4,5};
整数[][]第二个数组={{2,3},{3,4},{4,5};
//创建用于比较的TwoDArray对象
TwoDArray first=新TwoDArray(firstArray);
//检验真假
System.out.println(first.equals(secondArray));
//初始化更多数组
字符串[][]第三方数组={
{“你好”,“再见”},
{“你好”,“再见”},
{“你好”,“再见”};
字符串[][]fourthArray={
{“你好”,“再见”},
{“再见”,“再见”},
{“你好”,“再见”};
//创建用于比较的TwoDArray对象
TwoDArray third=新的TwoDArray(thirdArray);
//检验真假
System.out.println(第三个等于(四个数组));
}
}

由于要求数组中的每个对应元素都相等,因此当发现不相等时,只需退出循环即可。例如,您可以
返回false
在这种情况下,仅当循环完成时才返回
true
(这意味着所有对应的元素都相等)

对于当前代码,只考虑最后一个元素(这将覆盖
isEqual
,无论结果是最后两个元素相等),而不考虑之前的所有值

此外,如果允许<代码> MyReals包含<代码> null 元素,那么考虑使用方法来比较对象的相等性,但这只是一个提示,而与真正的问题并不相关。

同样,还应注意以下几行:

if (myArray.length != other.length)
{
    return isEqual;
}
仅测试每个二维阵列的行数是否相等。请注意,您可能还应该比较每个数组的每一行的列之间是否相等。例如:

if (myArray[i].length != other[i].length)
    return false;

更不用说是
null
的数组本身应该被检查(即
myArray
myArray[i]
other
other[i]
)。

您可以获取该方法的代码并对其进行自定义,以便它接受2D数组:

publicstaticvoidmain(字符串[]args){
整数[][]one={{1,2},{3,4},{5,6},null};
整数[][]two={{1,2},{3,4},{5,6},null};
字符串[][]三={{“A”,“B”},{“C”,“D”},{“E”,null};
字符串[][]四={{“A”,“B”},{“C”,“D”},{“E”,null};
System.out.println(equals2D(一,二));//true
System.out.println(equals2D(三,四));//真
}
/**
*如果两个二维阵列包含相同的行,则它们相等
*按同样的顺序。此外,还考虑了两个数组引用
*如果两者都为“null”,则为相等。
*/
公共静态布尔等式2D(对象[][]a1,对象[][]a2){
如果(a1==a2)返回true;
如果(a1==null | | a2==null | | a1.length!=a2.length)
返回false;
对于(int i=0;i
/**
*如果两行包含相同的元素,则这两行相等
*按同样的顺序。此外,还考虑了两行引用
*如果两者都为“null”,则为相等。
*/
公共静态布尔等式1D(对象[]a1,对象[]a2){
如果(a1==a2)返回true;
如果(a1==null | | a2==null | | a1.length!=a2.length)
返回false;
对于(int i=0;i