0

首先,我正在尝试编写一个允许飞机上有 10 个座位的程序(在 seatArray[] 中已经分配了 10 个座位)。当用户输入他们想要的座位类型(头等舱或教练舱)时,我尝试创建的此方法必须占据该部分的第一个座位并将其标记为保留(先前定义的方法)。我现在有这个形状的方法,带有一个while循环和一个for循环。这是该方法的一部分:

`boolean flag = true;
    if (spec.equals("First Class"))
    {

        for(int i = 0; i < 4 ; i++)
        {
            while(flag)
            {
                seatArray[i] = new Seat(i, spec);
                if(seatArray[i].checkSeatAvailability() == true)
                {
                    seatArray[i].reserveSeat();
                    flag = false;
                }
                else
                {
                    flag = true;
                }
            }
        }
    }`

关于我将如何分配它的任何建议,如果没有,那么去下一个座位?

4

2 回答 2

0

您必须删除 while(flag) 并按如下方式更改代码:

 for(int i = 0; i < 4 && flag ; i++)
    {
            seatArray[i] = new Seat(i, spec);
            if(seatArray[i].checkSeatAvailability() == true)
            {
                seatArray[i].reserveSeat();
                flag = false;
            }
            else
            {
                flag = true;
            }
    }
于 2012-12-14T19:45:26.053 回答
0

我会这样定义我的Seat班级:

public class Seat {
    private static final String ECONOMY = "Economy";
    private static final String FIRST_CLASS = "First Class";
    private String seatingClass = ECONOMY;
    private boolean reserved = false;

    // Default, economy and not reserved. 
    public Seat() {
    }

    public Seat( String seatingClass, boolean reserved ) {
        this.seatingClass = seatingClass;
        this.reserved = reserved;
    }

    public void setIsReserved( boolean reserved ) {
        this.reserved = reserved;
    }

    public boolean isReserved() {
        return reserved;
    }
    // more getters/setters...
}

isReserved()稍后您可以使用未预留的座位填充座位数组,如果它们没有使用and预留,您可以通过并预留它们setIsReserved(..)

于 2012-12-14T19:46:48.067 回答