我正在研究一種方法,該方法可以找到給定值的第一個實例並返回其位置。它適用於某些情況,但是如果我給它一個[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;
在此先感謝!
我正在研究一種方法,該方法可以找到給定值的第一個實例並返回其位置。它適用於某些情況,但是如果我給它一個[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;
在此先感謝!
因爲你正在返回b-1。事實上,如果你需要找到相同的實例並返回索引,你甚至不需要變量b。你可以像這樣的東西做到這一點:
for(int a = 0; a < values.length; a++) {
if (values[a] == find){
return a;
}
}
return -1 // Notfound
}
添加return -1
線,當值沒有找到,作爲一個警戒值使用。
嘗試
for(int a = 0; a<values.length; a++) {
if (values[a] == find){
return a;
}
}
爲什麼不返回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;
的它不會編譯位置,return語句是不正確的地方,我想。說這個方法必須返回一個int類型。 – shewontreply
當沒有找到值時,您沒有指定如何操作的定義。試試這個,當在數組中找不到該值時,返回一個哨兵值-1。 (在回答中編輯) – Sednus
使用logic @Sednus提供了一個樣本[程序](http://mathbits.com/MathBits/Java/arrays/Searcing.htm)。 – basiljames