这如何返回正确的输出?

时间:2016-03-05 20:48:30

标签: java string equals

public int scoreUp(String[] key, String[] answers) {
  int score = 0;
  for (int i = 0; i < key.length; i++) {
    if (key[i] == answers[i])
      score += 4;
    else if (answers[i] != "?" && answers[i] != key[i])
      score--;
  }
  return score;
}

这适用于http://codingbat.com/prob/p180365,但它使用==来比较字符串而不是equals方法?怎么样?

2 个答案:

答案 0 :(得分:1)

  

如何返回正确的输出?

如果key数组和answer数组都使用 interned 字符串,那么==对于比较有效。

这是一个危险的假设,所以程序员应总是使用equals()来比较字符串,即使 interned 得到保证,因为这样的保证可能会消失在未来,可能会忽略微妙的隐含假设。始终使用equals()是代码的未来保护。

答案 1 :(得分:0)

if (key[i] == answers[i])在有效参考中比较两个字符串

编译器没有理由抱怨,实际上这可以是一种逻辑方式来检查对象是否相同。

如果这是比较字符串的正确方法是另一个问题。