我正在制作一个班级的飞机座位安排程序,我最终制作了两个toString
方法但是当我运行程序时,我的飞机课程中的toString
方法正在制作一些不具体的方法:
str= str + seats[i][j].toString();
我认为简单地删除座位类中的toString
方法并以某种方式将其放回飞机类toString
方法中可以解决问题或使其更简单。怎么了?
public class Airplane
{
private Seat [ ] [ ] seats;
public static final int FIRST_CLASS = 1;
public static final int ECONOMY = 2;
private static final int FC_ROWS = 5;
private static final int FC_COLS = 4;
private static final int ECONOMY_ROWS = 5;
private static final int ECONOMY_COLS = 6;
public Airplane()
{
seats = new Seat[FC_ROWS][ECONOMY_COLS];
}
public String toString()
{
String str = "";
for (int i=0; i<FC_ROWS; i++) {
for (int j=0; j<ECONOMY_COLS; j++)
{
str= str + seats[i][j].toString();
}
str = str + "\n";
}
return str;
}
}
public class Seat
{
private int seatType;
private boolean isReserved;
public static final int WINDOW = 1;
public static final int AISLE = 2;
public static final int CENTER = 3;
public Seat(int inSeatType)
{
seatType = inSeatType;
isReserved = false;
}
public int getSeatType()
{
return seatType;
}
public void reserveSeat()
{
isReserved = true;
}
public boolean isAvailable()
{
if (!isReserved)
{
return true;
}
else return false;
}
public String toString()
{
if(isReserved == false)
{
return "*";
}
else return "";
}
}
答案 0 :(得分:1)
seats
似乎没有Seat
的实例。
添加此代码:
for (int i=0; i<FC_ROWS; i++) {
for (int j=0; j<ECONOMY_COLS; j++)
{
seats[i][j] = new Seat();
}
}
在此之下:
seats = new Seat[FC_ROWS][ECONOMY_COLS];
答案 1 :(得分:1)
Seat.toString
中,您应该打印" "
而不是""
。FC_ROWS
ECONOMY_COLS
,所以您没有创建所有席位。你应该有两个数组(一个用于FC,一个用于经济),因为FC_ROWS != ECONOMY_ROWS
。Seat
。使用嵌套循环创建它们,否则您将获得NullPointerException
。创建数组不会创建数组中包含的对象。
if
语句来确定座位是否应该是一个窗口,过道等。答案 2 :(得分:0)
我认为在Seat::toString
中,如果没有保留,则表示返回" "
(空格)。