0

我正在为班级的飞机座位安排制作程序,我最终制作了两种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 "";
  }
}
4

3 回答 3

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];
于 2013-04-05T04:42:57.833 回答
1
  • Seat.toString你应该打印一个" "not ""
  • 你的数组是FC_ROWSby ECONOMY_COLS,所以你没有创建所有的座位。您可能应该有两个阵列(一个用于 FC,一个用于经济),因为FC_ROWS != ECONOMY_ROWS.
  • 您实际上并没有Seat在构造函数中创建 s 。使用嵌套循环来创建它们,否则你会得到一个NullPointerException. 创建数组不会创建数组中包含的对象。
    • 当您在 Airplane 构造函数中创建座位时,使用if语句来确定座位是否应该是 Window、Aisle 等。
于 2013-04-05T04:43:50.933 回答
0

我认为 in ,如果没有保留Seat::toString,您的意思是返回(一个空格)。" "

于 2013-04-05T04:40:30.493 回答