2012-10-30 40 views
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語句嗎?在if語句

+0

一旦找到該人員,無需繼續循環。 '{for(int i = 0; i ignis

回答

8

if (giftGivers[i].name == n)是錯誤的,使用if (giftGivers[i].name.equals(n))

BTW,沒有必要使用NP。它是C風格的,在Java中沒有必要(實際上非​​常危險)。取而代之的

for (int i = 0; i < NP; i++)

只是說for (int i = 0; i < giftGivers.length; i++)

+0

謝謝你的建議。我實際上不得不加上「休息」。在if語句中使其工作。 – Eric

1
(giftGivers[i].name == n){ 

應該

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

字符串/對象比較應該使用.equals()代替==

==將檢查參考平等。 equals()檢查對象是否相等。

2

您需要使用equals來比較字符串而不是==

==將比較對象引用而不是實際的字符串值。

如果你不關心的話,那麼還有一個equals方法是ignores case

1

.equals()兩個字符串對象,==運營商檢查equality方法檢查如果兩個變量refrence指向同一個String對象。

你的情況,你必須使用.equals()方法

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

參考String API。 請注意,如果您想檢查兩個字符串是否區分大小寫,請使用equalsIgnoreCase()