1 回答
TA贡献1851条经验 获得超3个赞
首先,您误解了如何正确使用 asObject仅getParameters适用于当前对象,它不会搜索您创建的所有对象。如果要查找特定对象,则必须使用 aCollection来跟踪所有对象。
此外,您不应使用变量名来存储信息,而应将该信息作为整数存储在对象内部。
这是修改后的Flight类:
class Flight {
private String departures;
private String arrival;
private int price;
private int flightNum;
public Flight(String departures, String arrival, int price, int flightNum){
this.departures = departures;
this.arrival = arrival;
this.price = price;
this.flightNum = flightNum;
}
public String getParameters(){
return "Lot z "+this.departures+" do "+this.arrival+" kosztuje "+this.price;
}
public String getDepartures() {
return departures;
}
public String getArrival() {
return arrival;
}
public int getPrice() {
return price;
}
public int getFlightNum() {
return flightNum;
}
public void setDepartures(String departures) {
this.departures = departures;
}
public void setArrival(String arrival) {
this.arrival = arrival;
}
public void setPrice(int price) {
this.price = price;
}
public void setFlightNum(int flightNum) {
this.flightNum = flightNum;
}
}
请注意,我添加了新参数,并使用标准的 getter 和 setter 来访问flightNum所有类变量。private
现在这里是修改后的Airlines类,它使用 anArrayList来存储Flights:
class Airlines {
public static void main(String args[]) throws Exception{
ArrayList<Flight> flights = new ArrayList<>();
flights.add(new Flight("Moskwa", "Londyn", 140, 524));
flights.add(new Flight("Warszawa", "Wroclaw", 60, 135));
flights.add(new Flight("Frankfurt", "Rzym", 95, 141));
Scanner flightNumber = new Scanner(System.in);
System.out.println("Enter code of your flight: ");
int flightNumber_go = Integer.valueOf(flightNumber.nextLine());
Flight currentFlight = findFlight(flights, flightNumber_go);
System.out.println(currentFlight.getParameters());
}
public static Flight findFlight(ArrayList<Flight> flights, int flightNum) {
for (Flight f : flights) {
if (f.getFlightNum() == flightNum) {
return f;
}
}
//If no flights are found
return null;
}
}
我添加了一个static名为的方法findFlight,该方法将ArrayList您flightNumber想要查找的作为参数,并返回相应的Flight. 这是使用一个简单的增强for循环完成的。null如果未找到航班,该方法将返回,可以修改它以返回您想要的默认情况下的任何内容。
示例运行:
输入您的航班代码:
135
从华沙到弗罗茨瓦夫的航班费用为 60
注意: 在您的情况下,使用 aMap将密钥存储为航班号和 asFlight值可能是有意义的,以确保密钥是唯一的,然后您本身就不需要flightNumber了Object。这ArrayList只是一种方法。
添加回答
举报