[英]How can I transfer some values from one class to another?
首先,我有3个与getter和setter的类。 在Main类中,我扫描了两个int
类型的变量,称为rows
和columns
,它们又用于初始化Airplane
类的实例。 之后,我想在Flight
类中计算这些变量的乘积。 因此,我将值设置为rows = 2
和columns = 3
并将其输出到console
0
。 我提供的每个不同的值始终返回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
}
在第二个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());
}
}
}
我认为这是多态性和合成的练习。 想法可能是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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.