static int findPerson(String n, int NP, Friend[] giftGivers){
int index = 0;
for (int i = 0; i < NP; i++){
if (giftGivers[i].name == n){
index = i;
}
}
return index;
}
我在Java中使用这个代码来搜索一个Friends数组,找到名字由String n输入的人的索引号。但是我发现索引号没有设置为应该的索引号。是因为它在if语句中吗?
答案 0 :(得分:8)
if (giftGivers[i].name == n)
错误,请使用if (giftGivers[i].name.equals(n))
顺便说一句,没有必要使用NP
。这是C风格,在Java中没有必要(实际上,非常危险)。而不是
for (int i = 0; i < NP; i++)
,
只说for (int i = 0; i < giftGivers.length; i++)
答案 1 :(得分:2)
答案 2 :(得分:1)
(giftGivers[i].name == n){
应该是
(giftGivers[i].name.equals(n)){
字符串/对象比较应使用.equals()
而不是==
==
将检查引用相等性。 equals()
检查对象是否相等。
答案 3 :(得分:1)
.equals()
方法检查两个字符串对象的equality
,==
运算符检查两个引用变量是否指向同一个String对象。
在您的情况下,您必须使用.equals()
方法
if (giftGivers[i].name.equals(n))
参考String API。
请注意,如果您想检查两个字符串是否相等,则不区分大小写使用equalsIgnoreCase()