在for循环中隔离特定地址时遇到问题

时间:2012-12-14 19:33:03

标签: java loops

首先,我正在尝试编写一个允许飞机上有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;
                }
            }
        }
    }`

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

2 个答案:

答案 0 :(得分:0)

您必须删除while(标记)并更改代码,如下所示:

 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;
            }
    }

答案 1 :(得分: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()setIsReserved(..)保留席位数组,则可以保留这些席位。