2016-02-13 97 views
-1

我一直在試圖創建一個類,它確定一個arraylist中的一組整數是否是另一個arraylist的一個子集。返回arraylist錯誤

但是,每當我嘗試編譯並顯示「返回成員」導致它時,我收到一個「錯誤:不兼容的類型:ArrayList不能轉換爲int」。

有人能告訴我什麼是「退貨成員」的錯?任何幫助將不勝感激。

// Define the Set class 

import java.util.ArrayList; 

class Set { 

    private ArrayList<Integer> members; 

    public Set() 
    { 
     members = new ArrayList<Integer>(); 
    } 

    public int getMembers() 
    { 
     return members; 
    } 

    public void setMembers() 
    { 
     this.members = members; 
    } 

    // toString() method 
    public String toString() 
    { 
     return "Set A is a subset of set B."; 
    } 

    // Return true if 'this' is a subset of 'set', 
    // otherwise return false. 
    public boolean isSubset(Set set) 
    { 
     for(int i = 0; i < this.members.size(); i++) 
      if(!members.contains(this.members.get(i))) 
       return false; 

     return true; 
    } 
} 
+0

這是'if(!members.contains(this.members.get(i)))'真的你想要什麼?它永遠不會是真的。你也應該在你的循環中使用括號。 – user

+0

我試圖讓程序返回false,如果數字不包含在第二個子集中。爲什麼它永遠不會是真的? –

+0

因爲你正在處理同一個變量。你檢索一個'members'元素並檢查'members'是否包含這個元素。很顯然,否則你將無法獲得元素。另外參數'set'不被使用。我認爲'if(!set.contains(members.get(i)))'是你正在尋找的 – user

回答

0

這種方法是你的問題:

public int getMembers() 
{ 
    return members; 
} 

錯誤的返回類型,將其更改爲:

public ArrayList<Integer> getMembers() 
{ 
    return members; 
} 

而且你setMembers()不會做任何事情,公司本身設置爲自己。應改爲:

public void setMembers(ArrayList<Integer> newMembers) 
{ 
    this.members = newMembers; 
} 
+0

謝謝!是的,我意識到這是一個變種! –

0

您在getMenbers()犯錯誤的第一place.change返回類型。你正在返回一個Object類型,並且你指定它返回一個int(原始)。 一個典型的方法只能返回指定的類型。希望它有幫助