设置和显示名称和电子邮件Java对象类

问题描述 投票:0回答:2

我有这个java类分配,它输入机组成员并显示他们的信息,我做了其他类似的情况,但不知道如何构建这个。我要创建两个类,Sailor和CrewMember,它们可以使用这个主要方法 -

import java.util.ArrayList;

public class SailorProgram {

    public static void main(String[] args) {

        Sailor firstSailor = new Sailor("Jimmy", "[email protected]");
        Sailor secondSailor = new Sailor("Rose", "[email protected]");
        Sailor thirdSailor = new Sailor("James", "[email protected]");


        CrewMember firstCrew = new CrewMember();
        CrewMember secondCrew = new CrewMember();

        firstCrew.addCrewMember(firstSailor);
        firstCrew.addCrewMember(secondSailor);

        secondCrew.addCrewMember(thirdSailor);
        secondCrew.addCrewMember(secondSailor);

        System.out.println(" First crew \n" + firstCrew);
        System.out.println(" Second crew \n" + secondCrew);

        secondSailor.setEmail("[email protected]");
        System.out.println(" Second crew \n" + secondCrew);
    }
}

然后打印出来

First crew
Jimmy ([email protected])
Rose ([email protected])

Second crew
James ([email protected])
Rose ([email protected])

Second crew
James ([email protected])
Rose ([email protected])

谢谢!

java arrays class object arraylist
2个回答
0
投票

问题并不完全清楚,但我会做出一些假设。首先,你的CrewMember类拥有水手,所以一个更合适的名字将是Crew。你可以实现这个的方法是使用ArrayList<Sailor>

class Crew {

    private final ArrayList<Sailor> sailors = new ArrayList<>();

    //other things, like constuctor here, if needed 

    public void addCrewMember(Sailor s) { //add sailors with this
        sailors.add(s);
    }
}

然后你的Sailor课很简单。

class Sailor {

    private String name;
    private String email;

    public Sailor(String name, String email) {
        this.name = name; this.email = email;
    }

    //other methods, like getters here
}

编辑:我注意到你也需要打印对象。为此你可以使用Object类'toString方法。你的Sailor类的一个例子:

@Override
public String toString() {
    return name + ", " + email;
}

使用System.out.println(sailor1)将在sailor1上调用此方法。


1
投票

addCrewMember()是我们想知道的关键方法。如果你将Sailor引用给secondCrew类,输出将会改变。

public class Sailor {
private String name;
private String email;

public Sailor(String name, String email) {
    this.name = name;
    this.email = email;
}

@Override
public String toString() {return name + " " + "(" + email + ")";}
}

如果CrewMember.class如下所示

import java.util.ArrayList;

public class CrewMember {

private final ArrayList<Sailor> sailors = new ArrayList<>();

public void addCrewMember(Sailor s) { //add sailors with this
    sailors.add(s);
}
@Override
public String toString() { return sailors.toString(); }
}

并在您的问题中运行您的主要方法输出是这样的:

 First crew 
 [Jimmy ([email protected]), Rose ([email protected])]

 Second crew 
 [James ([email protected]), Rose ([email protected])]

 Second crew 
 [James ([email protected]), Rose ([email protected])]

[email protected]正在改变!因为ArrayList水手保存了Rose Sailor的参考

© www.soinside.com 2019 - 2024. All rights reserved.