我有这个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])
谢谢!
问题并不完全清楚,但我会做出一些假设。首先,你的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
上调用此方法。
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的参考