我是Java的新手,已经学习了两周的课程,并被要求完成一个包含以下信息的程序:


  
  设计具有以下数据字段的船级:
  
  
  船名的数据字段(字符串)。
  船舶建造年份的数据字段(整数)。
  构造函数以及适当的访问器和修改器。
  一个toString方法,用于显示飞船的名称和建造年份。
  
  设计一个CruiseShip子类,以扩展Ship类。 CruiseShip类应具有以下内容:
  
  
  一个额外的数据字段,用于表示最大乘客数(整数)。
  构造函数以及适当的访问器和修改器。
  一个toString方法,它重写基类中的toString方法。 CruiseShip类的toString方法还应包括
  最大乘客限制。
  
  设计一个扩展Ship类的CargoShip类。 CargoShip类应具有以下内容:
  
  
  吨位货物容量的额外数据字段(整数)。
  构造函数以及适当的访问器和修改器。
  一个toString方法,它重写基类中的toString方法。 CargoShip类的toString方法还应包括
  货物吨位。
  
  在适当的类别中,包括一个equals方法,以测试两艘船是否相等-如果它们具有相同的
  同名,并于同年建造。
  在具有Ship对象数组(其中至少有5个)的程序(ShipTester)中演示这些类。分配各种Ship,CruiseShip,
  和CargoShip对象到数组元素(您可以对
  对象和数据),并打印出初始飞船配置。节目
  您可以在采样中同时使用accessor和mutator方法
  的船(再次,您可以在此处将方法参数硬编码为
  你喜欢)。
  


我了解问题的基础,并且已经完成以下工作:

Ship.java

public class Ship {

    private String name;
    private int yearBuilt;

    public Ship(String name, int yearBuilt) {

        this.name = name;
        this.yearBuilt = yearBuilt;

    }

    public String returnName() {

        return this.name;

    }

    public int returnYear() {

        return this.yearBuilt;

    }

    public boolean equals(Ship other) {

        return false;

    }

    public String toString() {

        return "[Name: " + this.name + ". Year built: " + this.yearBuilt + "]";

    }
}


CruiseShip.java

public class CruiseShip extends Ship {

    private int maxPassengers;

    public CruiseShip() {

        super("USS Enterprise", 2245);

        this.maxPassengers = 2400;

    }

    public CruiseShip(String name, int yearBuilt, int maxPassengers) {

        super(name, yearBuilt);
        this.maxPassengers = maxPassengers;

    }

    public String toString() {

        return "Cruise Ship" + super.toString() + ", Passengers: " + this.maxPassengers + "]";

    }

}


CargoShip.java

public class CargoShip extends Ship {

    private int cargoCapacity;

    public CargoShip() {

        super("Black Pearl", 1699);

        this.cargoCapacity = 50000;

    }

    public CargoShip(String name, int yearBuilt, int cargoCapacity) {

        super(name, yearBuilt);
        this.cargoCapacity = cargoCapacity;

    }

    public String toString() {

        return "Cargo Ship" + super.toString() + ", Tonnage: " + this.cargoCapacity + "]";

    }

}


并在我的测试器文件中-ShipTester.java

public class ShipTester {
    public static void main(String []args) {

        //I don't know what to put over here...

    }
}


我不知道要在主要方法中放什么...我确实知道我必须创建一艘船,但我不知道如何用货船,游轮等来做...

我应该有的输出:

显示船只:
船[名称:安妮女王复仇年份:1701年]

游轮[船舶[名称:USS企业年建:2245],乘客:2400]

货船[船[名称:黑珍珠建造年代:1699],吨位:50000]

游轮[船[名称:美国航海家号建造年代:2371],乘客:2800]

货船[船[名称:建造年份:1790],吨位:33100]

最佳答案

扩展到Hovercraft所说的内容,但您可能想对对象数组使用ArrayList。

Creating an Arraylist of Objects



ArrayList<Ship> myArray = new ArrayList();
myArray.add(new CargoShip("TheKing",1990,10000));
myArray.add(new CruiseShip("Princess",2000,5000));


等等

[编辑]忘记了您也需要打印

您使用简单的for循环进行打印,例如:

for (int i = 0; i < myArray.size(); i++) {
  System.out.println(myArray.get(i).toString());
}


注意-这不是我不想跳过您的学习过程的确切答案。但这至少应该使您对可以采取的道路有所了解...

09-25 21:25