将变量设置为if语句中的值

时间:2012-10-30 20:40:50

标签: java if-statement

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语句中吗?

4 个答案:

答案 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)

您需要使用equals来比较不是==的字符串。

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

如果您不关心案例,那么还有一个等于ignores case

的方法

答案 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()