Array.equals(...)给出了错误的结果

时间:2014-12-29 03:12:57

标签: java arrays if-statement

无效的代码

这段代码应该打印'if if'但是没有,我不知道它有什么问题。

doublesArray[0] = 3;
doublesArray[1] = 3;
doublesArray[2] = 3;
doublesArray[3] = 0;

int[] temp6 = {3,3,3,0};
//length is 4 for both arrays

if(doublesArray.equals(temp6))
  System.out.println("Inside if");

这些是显示应该打印的内容

      int[] temp6 = {3,3,3,0};
      doublesArray[0] = 3;      
      doublesArray[1] = 3;      
      doublesArray[2] = 3;      
      doublesArray[3] = 0;
      //length is 4 for both arrays

      System.out.println("temp6 " + temp6[0] + " " + temp6[1] + " " + temp6[2] + " " + temp6[3]);
      System.out.println("doublesArray " + doublesArray[0] + " " + doublesArray[1] + " " + 
        doublesArray[2] + " " + doublesArray[3]);
      System.out.println("This should be true: ");
      System.out.println("doublesArray.equals(temp6) = " + doublesArray.equals(temp6) + "\n");

      //testing
      if(doublesArray[0] == temp6[0])
      System.out.println("correct");
      if(doublesArray[1] == temp6[1])
      System.out.println("correct");
      if(doublesArray[2] == temp6[2])
      System.out.println("correct");
      if(doublesArray[3] == temp6[3])
      System.out.println("correct");

      //testing with numbers
      System.out.println(" ");
      if(doublesArray[0] == 3)
         System.out.println("CORRECT");
      if(doublesArray[1] == 3)
         System.out.println("CORRECT");
      if(doublesArray[2] == 3)
         System.out.println("CORRECT");
      if(doublesArray[3] == 0)
         System.out.println("CORRECT");

这些是我得到的结果,应该表明doublesArray.equals(temp6)= true

temp6 3 3 3 0
doublesArray 3 3 3 0
This should be true: 
doublesArray.equals(temp6) = false

correct
correct
correct
correct

CORRECT
CORRECT
CORRECT
CORRECT

感谢那些能够提供帮助的人。

3 个答案:

答案 0 :(得分:4)

doublesArray.equals(temp6)与array1 == array2相同,即它是同一个数组。

Arrays.equals(array1,array2)比较数组的内容。

 public static void main(String[] args) {
        int[] doublesArray = new int[4];
        doublesArray[0] = 3;
        doublesArray[1] = 3;
        doublesArray[2] = 3;
        doublesArray[3] = 0;

        int[] temp6 = { 3, 3, 3, 0 };
        // length is 4 for both arrays

        if (Arrays.equals(temp6, doublesArray)) {
            System.out.println("Inside if");
        }
    }

<强>输出

Inside if

答案 1 :(得分:2)

Arrays.equals(a1, a2) 

比较你想要使用的两个数组的内容。

a1.equals(a2) 

比较a1和a2的引用,它与a1和a2指向内存中相同位置时的基本相同

答案 2 :(得分:0)

回答自己的问题,这样我的观点就会减少,其他人会得到更多 我认为doublesArray.equals(temp6)应该可以工作,但不是

Arrays.equals(temp6,doublesArray)有效。

但不要为什么doublesArray.equals(temp6)如果不起作用则不会出错。