【发布时间】:2018-07-24 14:10:03
【问题描述】:
我有一个类,FlightDatabase,其中包含许多 AirJourney 对象,这些空中旅程对象具有以下详细信息:始发机场、目的地机场和飞行里程数。
例如,一个AirJourney 对象可能具有起点:A、目的地:B 和里程:400。
以下字符串数组表示数据库中存在的每个AirJourney 对象,第一个字母是起点,第二个字母是目的地,第三个字母是飞行里程数。
"AB800", "BC900", "CD400", "DE400", "BF400", "CE300", "DE300", "EB600", "CE200", "DC700", "EB500", "FD200"
在此字符串中,有多个重复航班:DE400 和 DE300,然后是 CE300 和 CE200。
我需要能够从 FlightDatabase 返回 AirJourney 对象,同时忽略任何里程数更高的航班。
下面的方法允许使用由两个字母组成的字符串从数据库中返回 AirJourney 对象,该字符串将与对象中保存的始发地和目的地机场相匹配。但是,此方法将返回第一个匹配对象,而不是里程数最少的对象。
public AirJourney getFlightDetailsFromAirportPairing(String airportPair)
{
for(AirJourney journey : database)
{
String journeyPair = journey.getOriginAirport() + journey.getDestinationAirport();
if(airportPair.equals(journeyPair))
{
return journey;
}
}
return new AirJourney(0, null, null);
}
例如,如果我调用 `getFlightDetailsFromAirportPairing("DE") 则将返回 DE400 航班,而我希望返回 DE300 航班并忽略 DE400 航班。
我不确定如何修改此方法,以便返回里程最低的航班。
【问题讨论】:
-
您可以创建一个变量来存储最低满足的旅程,该变量适合 airportPair 字符串。而是立即返回旅程,遍历整个数据库,与保存在变量中的旅程进行比较,如果新旅程的长度较短则替换
标签: java