【发布时间】:2012-05-10 00:22:03
【问题描述】:
发现这个网站大概是为了测试想成为开发者的人......
http://www.devchallenge.co.uk/challenge-2
问题是这样的……
根据给定的代码,以下哪个测试将返回一个 “真”答案并通过,这将返回“假”答案和 失败?
ArrayList array1 = new ArrayList();
ArrayList array2 = new ArrayList();
array1.add(1);
array1.add(2);
array1.add("Aviva");
array2.add(1);
array2.add(2.0);
array2.add("Aviva");
Asserts
Equality
(array1[0],array2[0]);
Asserts
Equality
(array1[1],array2[1]);
Asserts
Equality
(array1[2],array2[2]);
显然答案是“失败”、“失败”、“通过”。
我不是 Java 开发人员 - 我假设这个挑战来自 Java(尽管没有说明)。
平等到底在做什么?它是在检查相同的 object 还是相同的 value?我知道有些对象被嵌入到 Java 中的字符串/整数池中,所以我可以理解为什么最后一个对象是正确的。但是为什么第一个不正确呢?
【问题讨论】:
-
这些断言是伪代码,所以没有明确的答案。但我很确定“平等”的意思是“调用
equals的结果”。 -
@Marko 是的,这就是我的想法——因此您是否希望看到
Equality( array1[0], array2[0] )产生真实的结果?因为它们的值是相等的...... -
是的。我去了那个网站,它看起来像一些废话。如果他们没有给出具体的、可编译的代码,他们可以声称任何答案都是正确的。
-
这不应使用 Java 标记。这不是 Java 代码。在 Java ArrayList 中,[] 运算符无法检索条目。例如,您需要使用 array1.get(0)。此外,方法名称中不能有空格,因此
Asserts Equality不是有效的 Java。最后,如果是java,答案会有所不同。如果它是 java 并且您将使用标准的 junit.framework.Assert.assertEquals,那么答案将是Pass, Fail, Pass。 -
@Alderath 好吧,我知道这家公司从事雇佣 Java 开发人员的业务,所以我认为这一定是 Java 代码——但没有说明。我只是想要一些 Java 大脑给我他们的意见。我真的是 C# / JS 开发人员 - 我的 Java 知识非常有限。感谢您的评论,很抱歉误导您!
标签: java reference assert equality