如何打印另一个类的数组?

时间:2019-05-02 16:52:33

标签: java arrays

我已经在公共舱航班中创建了一个带有航班目的地的数组,现在我想在公共舱客户中使用一种方法打印出该数组。但是由于某种原因,该数组始终打印为null,而我也无法犯错。

主类:

public class Main {
    public static void main(String[] args) {
        flight flight = new flight();
        customer customer = new customer();
        flight.createExampleData();
        customer.output();
    }
}

公共舱航班:

public class flight{
    public String[] destination = new String[2000];
    public void createExampleData(){
        this.destination[1] = "Paris";
        this.destination[2] = "Geneve";
        this.destination[3] = "Florida";
    }
}

公共类客户:

public class customer{
    flight flight = new flight();
    public int i;
    public void output() {
        this.i=1;
        while (i<4){
            System.out.println("Flightnumber: " + this.i);
            System.out.println("Destination: " + flight.destination[this.i]);
            System.out.println("");
            this.i++;
        }
    }
}

(由于该程序的简化版本中看不到的原因,我无法将打印内容放入flights类中)

方法createExampleData之后,方法outpout的结果:


航班号:1

目的地:空

航班号:2

目的地:空

航班号:3

目的地:空


感谢您的帮助

3 个答案:

答案 0 :(得分:3)

也许您没有在401 Unauthorized类中执行函数createExampleData()

答案 1 :(得分:1)

您使用的是两个不同的flight对象,一个是在main中创建的,另一个是在customer类中创建的,然后您对在main中创建的实例调用flight.createExampleData output方法使用customer对象中的那个,因此该那个中的数组从未被赋予任何值,因此输出为null。

我目前的建议是将flight中的customer变量公开

public class customer{
    public flight flight = new flight();
    ...
}

然后将main更改为

public class Main {
    public static void main(String[] args) {
        customer customer = new customer();
        customer.flight.createExampleData();
        customer.output();
    }
}

一种更好的解决方案是改为在customer上添加getFlight()方法,并将变量保持私有。

答案 2 :(得分:0)

    flight.createExampleData();

调用此函数时,将执行Flight类中的createExampleData方法。

    customer.output();

当您在Customer类中调用此输出方法时。

代码中的Flight和Customer类之间没有关系。因此,客户对象的输出方法不会知道Flight类的createExampleData中发生了什么。

您宁愿这样做

  String [] flightDestinations = flight.createExampleData();
  customer.output(flightDestinations);

您将必须在客户类中更改输出方法才能使用此字符串数组并打印其详细信息。另外,createExampleData的返回类型应为String [],以使其正常工作。