2011-05-19 58 views
0

我對Java很新,我想學習,所以我只是想知道如何通過我的數組進行線性搜索。 這是迄今爲止我所做的,但它不起作用。線性數組搜索

public boolean contains(Object elem) 
    { 
     boolean result = false; 
     for(int i=0;i<this.vector.length;i++) 
      if(elem.equals(this.vector[i])) 
       result=true; 
      else 
       result=false; 
     return result; 
    } 

    public int indexOf(V elem) 
    { 
     int pos = 0; 
     for(int i=0;i<this.vector.length;i++) 
      if(this.vector[i].equals(elem)) 
       pos=i; 
      else 
       pos= -1; 
     return pos; 
    } 
+0

你能告訴我們它是如何失敗的嗎?也許是一個例子。 – dfb 2011-05-19 16:37:30

回答

3

如果通過的elem是數組中的最後一項,則您的函數僅返回true。如果你發現它,你應該馬上return true

您的indexOf()方法遭受同樣的問題。

+0

感謝您的幫助,我修好了。 – ogward 2011-05-19 17:15:29

+0

@ogward接受的答案將是非常好的;) – Marcelo 2011-05-19 17:26:48

1

您找到該元素後就錯過了break

0

當你找到你的匹配時,你需要打破你的循環。

0

該代碼存在一些問題:在這兩種方法中,即使您已經找到該元素,也總是搜索整個數組。在這兩種方法中,這都是一個錯誤的來源(更重要的是:它不如其效率高)。

for(int i=0;i<this.vector.length;i++) 
    if(elem.equals(this.vector[i])) 
     return true; 
return false; 

(以及類似的其他方法)可能是更好的實現。

+0

謝謝!現在它工作! – ogward 2011-05-19 17:15:04

1

Oneliner:

Arrays.asList(vector).indexOf(elem); 

它只是創建和刪除在存儲器中的一個多個對象(ArrayList的)。在大多數情況下不應該是個問題。