2016-02-13 126 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(原始)。 一个典型的方法只能返回指定的类型。希望它有帮助