我有这个java类的任务,它输入机组人员并显示他们的信息,我也做了其他类似的案例,但是不确定如何构造这个案例。 我要创建两个使用此主要方法的类Sailor和CrewMember-
import java.util.ArrayList;
public class SailorProgram {
public static void main(String[] args) {
Sailor firstSailor = new Sailor("Jimmy", "jimmy@mail.com");
Sailor secondSailor = new Sailor("Rose", "rose@mail.com");
Sailor thirdSailor = new Sailor("James", "james@sailors.com");
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("Rose@sailors.com");
System.out.println(" Second crew \n" + secondCrew);
}
}
然后打印出
First crew
Jimmy (jimmy@mail.com)
Rose (rose@mail.com)
Second crew
James (james@sailors.com)
Rose (rose@mail.com)
Second crew
James (james@sailors.com)
Rose (rose@sailors.com)
谢谢!
答案 0 :(得分: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(); }
}
并在问题中运行主要方法 thr的输出是这样的:
First crew
[Jimmy (jimmy@mail.com), Rose (rose@mail.com)]
Second crew
[James (james@sailors.com), Rose (rose@mail.com)]
Second crew
[James (james@sailors.com), Rose (Rose@sailors.com)]
Rose@sailors.com发生了变化!因为 ArrayList美少女战士保存了Rose Sailor的引用
答案 1 :(得分: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
上调用此方法。