Java 如何在不使用.equals和假布尔值的情况下比较数组

Java 如何在不使用.equals和假布尔值的情况下比较数组,java,arrays,boolean,compare,Java,Arrays,Boolean,Compare,我必须在不使用.equals方法的情况下比较数组,并且当前程序运行正常,除非我有两个变量,例如 int[] y = {8,8,8}; int[] z = {8,8,9}; 我的程序说这是真的,而它应该说这是假的。以下是我的CompareArrays代码: if (arrayOne.length == arrayTwo.length) { for (int i = 0; i < arrayOne.length; i++) { if (arrayOne[i] == arra

我必须在不使用.equals方法的情况下比较数组,并且当前程序运行正常,除非我有两个变量,例如

int[] y = {8,8,8};
int[] z = {8,8,9};
我的程序说这是真的,而它应该说这是假的。以下是我的CompareArrays代码:

if (arrayOne.length == arrayTwo.length) {
   for (int i = 0; i < arrayOne.length; i++) {
      if (arrayOne[i] == arrayTwo[i]) {
         return true;
      }
   }
}

return areEqual;
if(arrayOne.length==arrayTwo.length){
for(int i=0;i

我必须使用
布尔值areEqual=false
并在最后返回它。

当它们相等时,不是立即返回,而是检查是否存在不等式,如果存在不等式,然后
返回false
。如果
for
循环结束而不返回,则可以安全地
返回true

if (arrayOne.length == arrayTwo.length) {

    for (int i = 0; i < arrayOne.length; i ++) {

        if (arrayOne [ i ] != arrayTwo [ i ] ) {

            return false; 
        }

    }

    return true;

}
return false;
if(arrayOne.length==arrayTwo.length){
for(int i=0;i
当它们相等时,检查是否存在不相等,而不是立即返回,如果存在,则
返回false
。如果
for
循环结束而不返回,则可以安全地
返回true

if (arrayOne.length == arrayTwo.length) {

    for (int i = 0; i < arrayOne.length; i ++) {

        if (arrayOne [ i ] != arrayTwo [ i ] ) {

            return false; 
        }

    }

    return true;

}
return false;
if(arrayOne.length==arrayTwo.length){
for(int i=0;i
一旦找到匹配的元素对,就返回true,并且从不更新
areEqual
。您需要继续,直到找到一对不相等的元素,或者到达数组的末尾

相反,使用
areEqual
变量告诉您是否找到了使它们不相等的东西。一旦您发现了使它们不平等的因素,您就不需要再检查:

boolean areEqual = false;  // Redundant assignment; but meh, if you've got to use this...
areEqual = arrayOne.length == arrayTwo.length;
for (int i = 0; areEqual && i < arrayOne.length; ++i) {
  areEqual = arrayOne[i] == arrayTwo[i];
}
return areEqual;
boolean areEqual=false;//冗余分配;但是,如果你必须用这个。。。
areEqual=arrayOne.length==arrayTwo.length;
对于(int i=0;areEqual&&i
一旦找到匹配的元素对,就返回true,并且从不更新
areEqual
。您需要继续,直到找到一对不相等的元素,或者到达数组的末尾

相反,使用
areEqual
变量告诉您是否找到了使它们不相等的东西。一旦您发现了使它们不平等的因素,您就不需要再检查:

boolean areEqual = false;  // Redundant assignment; but meh, if you've got to use this...
areEqual = arrayOne.length == arrayTwo.length;
for (int i = 0; areEqual && i < arrayOne.length; ++i) {
  areEqual = arrayOne[i] == arrayTwo[i];
}
return areEqual;
boolean areEqual=false;//冗余分配;但是,如果你必须用这个。。。
areEqual=arrayOne.length==arrayTwo.length;
对于(int i=0;areEqual&&i
@Mayhem的答案是正确的。我只想让您展示一种更干净的方式(通过删除
if
嵌套):

if(arrayOne.length!=arrayTwo.length){
返回false;
}
for(int i=0;i
@Mayhem的答案是正确的。我只想让您展示一种更干净的方式(通过删除
if
嵌套):

if(arrayOne.length!=arrayTwo.length){
返回false;
}
for(int i=0;i
Hello Andrew,这很简单,无论何时检查,第一次迭代都会返回true,而不是等待第二次迭代。我该如何更正?Hello Andrew,这很简单,无论何时检查,第一次迭代都会返回true,你不是在等待第二次迭代我怎么能纠正呢?有人愿意分享他们不喜欢这种方法的地方吗?我必须让布尔值areEqual=false。我不能改变it@AndrewDeWitt好了。?@AndyTurner谢谢你的帮助。这种方法同样有效。我不确定谁不喜欢它。我刚看到mayhems First有人愿意分享他们不喜欢这种方法的地方吗?我必须用布尔值areEqual=false。我不能改变it@AndrewDeWitt好了。?@AndyTurner谢谢你的帮助。这种方法同样有效。我不确定谁不喜欢它。我刚看到mayhems第一次被编辑(
!==
不是Java操作符),以为我用javascript过滤了问题;)是的,那正是我的意思。您避免了ifs嵌套,这通常是很棘手的。(
!==
不是Java操作符)经过编辑,我想我用javascript过滤了问题;)是的,那正是我的意思。您可以避免ifs嵌套,这通常会很棘手。@AndrewDeWitt。我相信这个要求是在问题创建之后添加的,很抱歉我错过了it@Mayhem1.它仍然有效,我只是说回报是平等的;不要像你在@MayhemAnyhow@AndyTurner最后那样返回false,实际上AndyTurner是正确的,我只想向你大声呼喊that@AndrewDeWitt.我相信该要求是在问题创建之后添加的,很抱歉我错过了it@Mayhem1.它仍然有效,我只是说回报是平等的;不要像你在@MayhemAnyhow@AndyTurner最后那样返回false,实际上AndyTurner是正确的,我只想大声说出来