2012-09-10 155 views
2

我正在研究一種方法,該方法可以找到給定值的第一個實例並返回其位置。它適用於某些情況,但是如果我給它一個[1,2,3]的數組,並將該值設置爲2,則返回0,而不是1.我不確定爲什麼。這裏是代碼:Java邏輯問題

int b = 0; 
for(int a = 0; a < values.length; a++) { 
    if (values[a] == find){ 
     b++; 
    } 
} 
return b-1; 

在此先感謝!

回答

6

因爲你正在返回b-1。事實上,如果你需要找到相同的實例並返回索引,你甚至不需要變量b。你可以像這樣的東西做到這一點:

for(int a = 0; a < values.length; a++) { 

if (values[a] == find){ 
    return a; 
} 
} 

return -1 // Notfound 
} 

添加return -1線,當值沒有找到,作爲一個警戒值使用。

+0

的它不會編譯位置,return語句是不正確的地方,我想。說這個方法必須返回一個int類型。 – shewontreply

+0

當沒有找到值時,您沒有指定如何操作的定義。試試這個,當在數組中找不到該值時,返回一個哨兵值-1。 (在回答中編輯) – Sednus

+2

使用logic @Sednus提供了一個樣本[程序](http://mathbits.com/MathBits/Java/arrays/Searcing.htm)。 – basiljames

2

嘗試

for(int a = 0; a<values.length; a++) { 
    if (values[a] == find){ 
     return a; 
    } 
} 
1

爲什麼不返回a本身,而不是做b-1;

也許你可以添加一個break聲明太停止迭代,因爲只需要一審

int b=0,result; 
    for(int a = 0; a<values.length; a++) 
    { 

    if (values[a] == find) 
    { 
     result=a; 
     break; 
    } 
    } 

return result;