1
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 中有这个代码,用于搜索朋友数组以查找名称由字符串 n 输入的人的索引号。但是我发现索引号没有设置为应该的索引号。是因为它在if语句中吗?

4

4 回答 4

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++)

于 2012-10-30T20:41:53.030 回答
2

您需要使用equals来比较字符串 not ==

==将比较对象引用而不是实际的字符串值。

如果你不关心大小写,那么还有一个忽略大小写的equals方法

于 2012-10-30T20:42:53.737 回答
1
(giftGivers[i].name == n){

应该

(giftGivers[i].name.equals(n)){

字符串/对象比较应该使用.equals()而不是==

==将检查引用相等性。equals()检查对象是否相等。

于 2012-10-30T20:42:12.410 回答
1

.equals()方法检查equality两个字符串对象,==运算符检查两个引用变量是否指向同一个字符串对象。

在您的情况下,您必须使用.equals()方法

if (giftGivers[i].name.equals(n))

请参阅字符串 API。请注意,如果您想检查两个字符串是否不区分大小写,请使用equalsIgnoreCase()

于 2012-10-30T20:47:20.227 回答