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

时间:2019-03-02 14:53:52

标签: java arrays class object arraylist

我有这个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)

谢谢!

2 个答案:

答案 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上调用此方法。