首页 > 解决方案 > 当比较两个相同的 Integer 类变量时,java 说它不相等

问题描述

所以我有比较两个整数变量的代码,它们是同一件事,但不知何故java说它不是。它将这个打印到控制台:

The expected and actual don't match: java.lang.AssertionError: expected:<[Ljava.lang.Integer;@7cf10a6f> but was:<514579> 对于以下代码:

@Test
    public void testDay_1() {
        Integer[][] testCases= {
                {1721, 979, 366, 299, 675, 1456},
                {2020, 0}
        };

        Integer[] expected = {
                514579,
                0
        };

        for (int i = 0; i < testCases.length; i++) {
            Integer actual = DayOne.find2020Sum(testCases[i]);
            try {
                Assert.assertEquals(expected, actual);      //HERE
            } catch (AssertionError e) {
                System.out.println("The expected and actual don't match: " + e);
                Assert.fail();
            }
        }
        System.out.println("Done");
    }

如何让代码正确匹配预期和实际的 514579?我不知道为什么它们都是相同类型的变量,但一个正在打印内存地址,另一个正在打印实际数字。我尝试了 System.out.println 来查看 [Ljava.lang.Integer;@7cf10a6f> 如何打印出来,它还打印内存地址和实际的 514579 数字,我不明白为什么它们都不打印数字。如果有人可以帮助我真的很感激!

标签: java

解决方案


根据您的代码,预期是一个数组。因此,您正在将数组与整数进行比较。

对我来说不是很清楚,但也许您想与预期的[i]进行比较?


推荐阅读