Как я могу перенести некоторые значения из одного класса в другой? - PullRequest
0 голосов
/ 09 мая 2019

Во-первых, у меня есть 3 класса с геттерами и сеттерами. В основном классе я сканирую две переменные типа int, называемые rows и columns, которые, в свою очередь, используются для инициализации экземпляра класса Airplane. После этого я хочу вычислить произведение этих переменных в классе Flight. Поэтому я дал значения rows = 2 и columns = 3, и он напечатал 0 для console. Каждое другое значение, которое я даю, в результате возвращает 0. Ваша помощь будет оценена по достоинству! Вот мой код:

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

  public class Main {
       public static void main(String[] args) {
           int counter=1;
           if (counter==1) {
               Scanner scanner = new Scanner(System.in);
               int rows, columns;
               Airplane airplane = new Airplane();
               rows = scanner.nextInt();
               airplane.setRows(rows);
               columns = scanner.nextInt();
               airplane.setColumns(columns);
               System.out.println(airplane.getColumns()*airplane.getRows());
               counter++;
           }
           if (counter==2){
                   Flight flight = new Flight();
                   int seats=0;
                   seats=flight.getNumberOfSeats();
                   System.out.println(seats);
            }
    }
}

Класс полета:

public class Flight {
    private int numberOfSeats;
    //getters and setters
}

Класс самолета:

public class Airplane {
    private int rows;
    private int columns;
    //getters and setters
}

Ответы [ 2 ]

1 голос
/ 09 мая 2019

Во втором операторе if вы создали новый экземпляр Flight, и вы не изменили ни одно из значений его поля, поэтому, когда вы читаете количество мест, оно все равно имеет начальное значение 0 (по умолчанию значение для int). Код ниже должен делать то, что вы хотите.

public class Main {
   public static void main(String[] args) {
       int counter=1;
       Airplane airplane;
       if (counter==1) {
           Scanner scanner = new Scanner(System.in);
           int rows, columns;
           airplane = new Airplane();
           rows = scanner.nextInt();
           airplane.setRows(rows);
           columns = scanner.nextInt();
           airplane.setColumns(columns);
           System.out.println(airplane.getColumns()*airplane.getRows());
           counter++;
       }
       if (counter==2) {
           Flight flight = new Flight();
           flight.setNumberOfSeats(airplane.getColumns()*airplane.getRows());
           System.out.println(flight.getNumberOfSeats());
       }
   }
}
0 голосов
/ 09 мая 2019

Я думаю, что это упражнение в полиморфизме и композиции . Вероятно, идея заключается в том, что Flight имеет Airplane отношение HAS-A . Ваш класс Flight будет выглядеть следующим образом:

class Flight {
  private Airplane airplane;
  private int numberOfSeats;

  public Flight(Airplane airplane) {
    this.airplane = airplane;
    this.numberOfSeats = (airplane.getColumns() * airplane.getRows());
  }

  public void getNumberOfSeats() {
     return this.numberOfSeats;
  }


  public void setNumberOfSeats(int numberOfSeats) {
    this.numberOfSeats = numberOfSeats;
  }
}

В вашем основном коде теперь вам нужно только передать почтение Airplane к Flight.

Flight flight = new Flight(airPlane);

Поскольку вы уже определили плоскость вне области действия if, это можно сделать, если изменить ее на Airplane airplane = null;

...