java - 在 if 条件中使用数组
问题描述
此代码应该模拟机场的票务系统。
这段代码有 3 个不同的类: AirlineTicket,它包含在这个程序中创建的对象的构造函数、访问器和修改器;AirlineTicketTester,它创建一个对象和一个数组,并使用同一类中的一个方法用“乘客”填充该数组;TicketOrganizer 有两种方法,但只有一种方法很重要:canBoardTogether()
. 这个方法应该做的是检查数组中的乘客是否可以与以下乘客一起登机。这样做的条件是两个乘客都需要具有相同的登机组和行(AirlineTicket 类的两个属性)。但是,此方法无法正常工作,它不会返回可以一起登机的正确乘客。
我能做些什么来纠正所说的方法?TicketOrganizer 类
import java.util.*;
public class TicketOrganizer
{
private ArrayList<AirlineTicket> tickets;
public TicketOrganizer(ArrayList<AirlineTicket> ticket){
this.tickets = ticket;
}
public ArrayList<AirlineTicket> getTickets(){
return tickets;
}
}
public String canBoardTogether(){
String together = "";
int counter = 0;
for(int i = 0; i<tickets.size()-1; i++){
if(tickets.get(i).getBoardingGroup() ==
tickets.get(i+1).getBoardingGroup()&&tickets.get(i).getRow() ==
tickets.get(i+1).getRow()){
together = together + "Passenger " + i + " can board with Passenger " + (int)(i+1) + "\n";
counter++;
}
}
if(counter == 0){
return "There are no passengers with the same row and boarding group.";
}
return together;
}
}
解决方案
因为您只与 比较tickets.get(i)
,所以tickets.get(i+1)
您的代码要求具有相同登机组和行的票在列表中相邻。tickets
除非门票按登机组排序然后行,否则您的代码不一定会找到您期望的匹配项。
在进行搜索之前试试这个:
tickets.sort(comparing(AirlineTicket::getBoardingGroup).andThen(AirlineTicket::getRow));
推荐阅读
- active-directory - 无法使用 Active Directory 凭证登录到 Amazon Linux 服务器
- kubernetes - GKE 需要 prometheus-to-sd 吗?我可以删除它吗?
- angular - 在 Angular 组件中导入 SCSS 颜色变量不起作用
- c# - 获取报表页脚水晶报表c#中每页的字段总和
- python - 如何在 django 中使用模板块?
- python - For 循环没有按我的预期运行。(循环通过python中的txt文件)
- java - Apache poi java:在另一台计算机上运行 JAR 文件时,图像未显示在文档中
- docker - 将在 Ubuntu VM 中运行的 docker 容器端口与 VM 的主机网络连接
- angular - 使用 Paypal 自定义客户 ID
- javascript - 如何在另一个元素之前插入元素