Java 为列车预订寻找相邻座位
我已经为商务舱和经济舱构建了一个包含Java 为列车预订寻找相邻座位,java,Java,我已经为商务舱和经济舱构建了一个包含2 ArrayList的对象序列 我的座位对象有一个座位数组列表 List<Seating> business_class = new ArrayList<Seating>(); List<Seating> economy_class = new ArrayList<Seating>(); int bCount = 1; int eCount = 10; for(int i = 0; i < rowNumb
2 ArrayList
的对象序列
我的座位对象有一个座位数组列表
List<Seating> business_class = new ArrayList<Seating>();
List<Seating> economy_class = new ArrayList<Seating>();
int bCount = 1;
int eCount = 10;
for(int i = 0; i < rowNumber; i++)
{
business_class.get(i).addSeat(new Seats(Integer.toString(bCount), "A"));
business_class.get(i).addSeat(new Seats(Integer.toString(bCount), "B"));
business_class.get(i).addSeat(new Seats(Integer.toString(bCount), "C"));
business_class.get(i).addSeat(new Seats(Integer.toString(bCount), "D"));
business_class.get(i).addSeat(new Seats(Integer.toString(bCount), "E"));
business_class.get(i).addSeat(new Seats(Integer.toString(bCount), "F"));
economy_class.get(i).addSeat(new Seats(Integer.toString(eCount), "A"));
economy_class.get(i).addSeat(new Seats(Integer.toString(eCount), "B"));
economy_class.get(i).addSeat(new Seats(Integer.toString(eCount), "C"));
economy_class.get(i).addSeat(new Seats(Integer.toString(eCount), "D"));
economy_class.get(i).addSeat(new Seats(Integer.toString(eCount), "E"));
economy_class.get(i).addSeat(new Seats(Integer.toString(eCount), "F"));
bCount++;
eCount++;
}
List business_class=new ArrayList();
List economy_class=new ArrayList();
int bCount=1;
int eCount=10;
for(int i=0;i
1A/1B/1C|1D/1E/1F
2A/2B/2C|2D/2E/2F
我的java程序可以添加一名
单人乘客或一组。对于我的团体预订,我必须寻求最大数量的可用相邻座位
。我对这种方法一窍不通。我已经对它进行了编码,但是它是一个混合语句,if和elseif语句考虑了所有可能的座位组合。该方法有600多行if-else语句。。。我在寻求一种更简单、更有效的方法,为团体找到相邻的座位
有关相邻座位的更多详细信息
例如,如果所有的座位都是空的,那么我会有6个相邻的座位。如果我有6个组成员,我将填充整行。如果我有7个小组成员。如果有的话,1将被放在前面一行,如果有的话,将被放在后面一行,从(座位号)A->(座位号)F开始
如果有乘客在1A和1F,我会有两套相邻的座位1B/1C和1D/1E。
如果有一组4人,那么这4人将填补这些席位。如果有一组3人,则填写1B/1C | | 1D
这就是这种特殊相邻座位方法的逻辑。商务舱和经济舱在座位上没有关系。Si我建议您:
创建一个方法seat.isFree()
如果座椅空闲,则返回true
,否则返回false
然后迭代类中的每一行座位,并查找行中第一个空闲的Seat
。它看起来像:
Seat freeSeat = null;
int length = 0;
for( each line ){
for( each seat){
Seat seat = seat.get(indexInLine);
if(seat.isFree()){
if(freeSeat == null){
freeSeat = seat;
length = 1;
} else
length++;
} else {
if(freeSeat != null){
yourList.add(seat, length);
}
freeSeat = null;
}
}
if(freeSeat != null){//So if the last seat of the line is also free add it to the free seat list
yourList.add(seat, length);
}
}
您的列表
的目的是包含座位
和int
对象的列表,这些对象将表示第一个空闲座位
及其后一行的空闲座位数(包括第一个)
然后,您将获得列表中所有相邻的空闲座位
您只需选择列表中的第一个元素,该元素的(int值)长度对您的所有组都很重要,如果没有,请在找不到相邻座位时将组分开。搜索可用空间管理。这是一个类似的问题。行yourList的目的是什么。添加(seat,length)
目的是创建一个元素列表,其中包含每行的第一个空闲seat
,以及他在该行之后的空闲座位数。