Java 如何返回正确的输出? public int scoreUp(字符串[]键,字符串[]答案){ 智力得分=0; for(int i=0;i
这可以工作,但它使用==来比较字符串,而不是使用equals方法?为什么?Java 如何返回正确的输出? public int scoreUp(字符串[]键,字符串[]答案){ 智力得分=0; for(int i=0;i,java,string,equals,Java,String,Equals,这可以工作,但它使用==来比较字符串,而不是使用equals方法?为什么?如果(键[i]==answers[i])在有效引用中比较两个字符串 编译器没有理由抱怨,事实上,这是一种逻辑上检查对象是否相同的方法 如果这是比较字符串的正确方法,则是另一个问题 该如何返回正确的输出 如果键数组和应答数组都使用插入字符串,则==对比较有效 这是一个危险的假设,因此程序员应该始终使用equals()来比较字符串,即使interned是有保证的,因为这种保证将来可能会消失,而微妙的隐式假设可能会被忽略。始终使
如果(键[i]==answers[i])
在有效引用中比较两个字符串
编译器没有理由抱怨,事实上,这是一种逻辑上检查对象是否相同的方法
如果这是比较字符串的正确方法,则是另一个问题
该如何返回正确的输出
如果键
数组和应答
数组都使用插入字符串,则==
对比较有效
这是一个危险的假设,因此程序员应该始终使用
equals()
来比较字符串,即使interned是有保证的,因为这种保证将来可能会消失,而微妙的隐式假设可能会被忽略。始终使用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;
}