在另一类中进行方法的问题

时间:2019-05-07 14:04:54

标签: java

我的Java作业有问题,无法解决。我的目标是创建一个名为Taxi的类,它表示出租车。因为每个出租车都有驾驶员,所以每个Taxi对象都应具有一个driver属性(类型为Human)。此外,Taxi可以有也由Human对象代表的乘客。

通过构造函数方法创建Taxi时,必须为其分配驱动程序。因此,类Taxi需要一个带有类型为Human的参数的构造函数。您可以使用方法Taxi来询问getDriverName()的驱动程序的名称,该方法为您为驱动程序创建的Human对象的字符串表示形式。

我已经完成了上面的大部分工作,但是在getDriverName()类中遇到了方法Taxi的问题,因此,如果我这样创建它,那么就不可能在“ main”中使用它。

我已经在Human中创建了类Taxi的全局变量:

private Human driver;       //made a global variable of Human class

然后我在Taxi类中构造了一个构造函数,以便在main中可以在main中创建Taxi的对象:

public Taxi(Human driver) { // create a constructor of Taxi class
    this.driver = driver;
}

但是我可以使用方法getDrivername()解决问题。令人惊讶的是,如果我将它放在Human类中,我可以调用它并在main中使用它。

public String getDrivername() {                      
    return driver.getName()+driver.getForename();
}

这里有大量代码,因为我什至都不知道我的错误可能在哪里:

public class Human {
    String forename,name;

    public String getName(){
        return name;
    }

    public String getForename(){
        return forename;
    }

    public Human(String fona, String na) {
        this.forename=fona;
        this.name=na;
    }

    @Override
    public String toString(){
        return this.name + this.forename;
    }
}

import java.util.ArrayList;

public class Taxi {
    private Human driver;       //made a global variable of Human class

    public Taxi(Human driver) { // create a constructor of Taxi class
        this.driver = driver;
    }

    public String getDrivername() {                       // method should return a name and forename of the driver
        return driver.getName()+driver.getForename();
    }

    public static void main (String[]args){

        Human driver = new Human("Juergen", "Staub"); //here I create objects with the constructor from Human class
        Human h1 = new Human("Andrea", "Bora");
        Human h2 = new Human("Franzi", "Ada");
        Human h3 = new Human("Leah", "Posh");
        Human h4 = new Human("Susi", "Fresh");
        Human h5 = new Human("Lucky", "Fuke");
        Taxi aTaxi=new Taxi(driver);
        ArrayList <Human> taxi = new ArrayList <Human> (4); //here I need to

        if (taxi.size()==0) {
            System.out.println("This is the taxi of " + driver.getDrivername() +". He takes nobody along.");
        }

        taxi.add(h1);

        if (taxi.size()==1) {
            System.out.println("This is the taxi of " + driver.getDriverName() +". He takes "+h1.getName()+ " along.");
        }
        taxi.add(h2);
        taxi.add(h3);
        taxi.add(h4);

        if (taxi.size()==4) {
            System.out.println("This is the taxi of " + driver.getDriverName() +". He takes "+ h1.getName()+","+ h2.getName()+ ","+ h3.getName()+","+ h4.getName()+" along.");
        }

        taxi.add(h5);

        if (taxi.size()==5) {
            System.out.println("We are sorry, "+ h5.getName() +". The taxi is full.");
        }

        taxi.clear();

        System.out.println("This  is the car of  " + driver.getDriverName());
        //for (Human counter:taxi){
        //    System.out.println(counter + " gets in");
        //}

        System.out.println("Now car has " + taxi.size() + "places to seat");
    }
}

请帮助我解决问题。

当然,我应该做我自己的家庭作业,但是浪费了很多时间,我最大的努力还不够。

0 个答案:

没有答案