Я создал массив с пунктами назначения рейсов на рейсах общего класса, и теперь я хочу распечатать массив, используя метод для клиентов открытого класса. Но по какой-то причине массив всегда печатается как ноль, и я не могу ошибиться.

Основной класс:

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++;
        }
    }
}

(Я не могу поместить печать в классе полетов по причинам, не видимым в этой простой версии программы)

Результат из метода, который выводится после создания метода Sample Data:


Номер рейса: 1

Назначение: ноль

Номер рейса: 2

Назначение: ноль

Номер рейса: 3

Назначение: ноль


Спасибо за помощь

-2
reichenwald 2 Май 2019 в 19:52

2 ответа

Лучший ответ

Вы используете два разных flight объекта, один из которых создан в main, а другой - в вашем customer классе, а затем вы вызываете flight.createExampleData в экземпляре, созданном в main, но {{ Метод X4}} использует объект в объекте customer, поэтому массиву этого объекта никогда не давались какие-либо значения, поэтому в выходных данных он равен нулю.

На данный момент я предлагаю сделать переменную flight в customer общедоступной.

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

А затем измените основной на

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

Лучшим решением может быть добавление метода getFlight () в customer и сохранение переменной в секрете.

2
Joakim Danielson 2 Май 2019 в 19:52

Может быть, вы не выполнили функцию createExampleData() в своем классе customers?

4
Arthur 2 Май 2019 в 17:00