【问题标题】:ArrayList Search in BlueJBlueJ 中的 ArrayList 搜索
【发布时间】:2014-11-03 00:13:43
【问题描述】:

现在学校已经重新开始尝试重新使用 Java,但我很难找到在两个班级之间正常工作的方法。

我有一个“家庭”类和一个“成员”类,我需要确保每个成员在添加到家庭时都有不同的唯一 ID。到目前为止,我有:

public class Family
{
private ArrayList <Member> FamilyMembers;

...

public Family()
{
    FamilyMembers = new ArrayList<Member>();
}

....

public ArrayList getMembers()
{
    return FamilyMembers;    
}

}

public class Member
{
private int ID;

...

public Member(int newID, String newMemberName, String newSex)
{
    this.ID = newID;

...

}

 public void setID(int newID)
{  

    boolean unique = true;
    for(Member m: Family.getMembers())
      {
       if(m.getID()==newID)
        {
          unique=false;
        }
       }
    if(true)
     {
        this.ID = newID;
     }
}

编译时出现无法从静态上下文引用非静态方法 getMembers 的错误?我不明白为什么在设置 ID 之前不能使用 Family 类的 get 方法执行搜索?非常感谢任何帮助或建议!

【问题讨论】:

    标签: java class arraylist bluej


    【解决方案1】:

    其实方法:

    public ArrayList getMembers()
    {
        return FamilyMembers;    
    }
    

    不是静态的需要你创建一个Family类的对象来调用上面的方法。您可以做以下两件事之一。

    1. 添加静态一词如下:

      公共静态 ArrayList getMembers().

    2. 或者你可以像下面这样创建一个类的对象。 插入此代码。

      家庭 ob = new Family();

    ob 是对象。现在你可以使用它来调用方法如下:

    ob.getMembers();
    

    在您的代码中,它将如下所示:

    for(Member m: ob.getMembers())
    

    【讨论】:

    • 在这里我尝试将“静态”放在方法前面,但是在循环中我无法“找到符号 - 变量系列”。如果我创建一个新的Family 在方法中,我收到有关不兼容类型的错误: public void setID(int newID) { boolean unique = true; Family f = new Family(); for(Member m: f.getMembers()) { if(m. getID()==newID) { unique=false; } } ... }(抱歉,我不知道如何在评论中标记代码)
    • 你能说清楚吗,我不明白你为什么要表达。我的解决方案对你有用吗?
    • 对不起,如果我不清楚。我试图展示我使用任一选项的结果。两种方法都无法编译并完成我需要做的事情。
    • 你得到解决方案了吗
    • 目前还没有。我只是说“两种方式都没有编译并做了我需要做的事情”。我认为你的建议是正确的,我稍后会尝试更多的事情。
    【解决方案2】:

    您需要一个Family 实例来调用getMembers()。所以这个,

    for(Member m: Family.getMembers())
    

    应该是这样的(或传递实例,f 下面,in),

    Family f = new Family();
    for(Member m: f.getMembers())
    

    【讨论】:

    • 这解决了我之前在从其他类中获取方法以在不同类中调用时遇到的一些麻烦,谢谢!但是如果我按照这些思路做了一些事情,我是否还必须通过调用它的构造函数在 Family 内部生成一个 ArrayList 并且 ID 只会在那个 Family 中是唯一的?
    猜你喜欢
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多