我无法弄清楚getTotalFlightTime()

时间:2019-11-03 04:08:22

标签: java

行程类通过以下成员存储有关行程的信息:

•一个名为flight的私有ArrayList数据字段,其中包含该行程的航班 出发时间的递增顺序。 (提示:您无需进行排序。)

•一个构造函数,它使用ArrayList类型的指定航班创建行程。

•一种名为getTotalFlightTime()的方法,该方法以分钟为单位返回行程的总飞行时间。 (提示:为每个Flight对象调用getFlightTime()方法。)

•一种名为getTotalTravelTime()的方法,该方法以分钟为单位返回从 行程中首个航班的出发时间至最后一个航班的到达时间。假设所有 时间在同一时区。

package que6;

/**
 *
 * @author vpi764
 */


import java.util.ArrayList;
import java.util.GregorianCalendar;
public class TestFlightItinerary {


    public static void main(String[] args) {

  lic static void main(String[] args) {
        ArrayList<Flight>flights = new ArrayList<>();
  Flight F1 =  new Flight("US230", new GregorianCalendar(2014, 5, 5, 5, 5, 0), new GregorianCalendar(2014, 5, 5, 6, 15, 0));
    Flight F2 =  new Flight("US235", new GregorianCalendar(2014, 5, 5, 6, 55, 0), new GregorianCalendar(2014, 5, 5, 7, 45, 0));
      Flight F3 =  new Flight("US237", new GregorianCalendar(2014, 5, 5, 9, 35, 0), new GregorianCalendar(2014, 5, 5, 12, 55, 0));

      flights.add(F1);
      flights.add(F2);
      flights.add(F3);

 }

}
class Flight{

        private String flightNo;
        private GregorianCalendar departureTime;
        private GregorianCalendar arrivalTime;


        //Constructor
        Flight(String SpecNo,GregorianCalendar SpecDtime ,GregorianCalendar SpecAtime ){
            this.flightNo = SpecNo;
            this.departureTime = SpecDtime;
            this.arrivalTime = SpecAtime;
        }
        //Getters
        public String GetFlightNo() {
            return flightNo;
        }
        public GregorianCalendar GetDtime() {
            return departureTime;
        }
        public GregorianCalendar GetAtime() {
            return arrivalTime;
        }

        //setters
        // If we don't use setter the could would still work because we are getting input in constructor with parameters
        public void SetFlightNo(String Number) {
            flightNo = Number;
        }
        public void SetDtime(GregorianCalendar Dtime) {
            departureTime = Dtime;
        }
        public void SetAtime(GregorianCalendar Atime) {
            arrivalTime = Atime;
        }

        public long getTimeinMillis() {
                return (arrivalTime.getTimeInMillis() - departureTime.getTimeInMillis());
                }
                // getFlightTime method
                public long getFlightTime() {
                return getTimeinMillis() / (60 * 1000);
                }
    }
class Itinerary {


    ArrayList<Flight> flights = new ArrayList<>();

   public Itinerary(){
           this.flights = flights;
    }
    public long getTotalFlightTime(ArrayList<Flight> flights){

    }
    public long getTotalTravelTime(){

    }


}

2 个答案:

答案 0 :(得分:1)

ArrayList保持添加元素的顺序。可能就是这样。

答案 1 :(得分:0)

如果我正确理解了说明,则无需对ArrayList进行排序。您所需要做的就是定义一个接受一个FlightArray的构造函数。

您的行程表应该是:

class Itinerary {
    ArrayList<Flight> flights; // no need to instantiate, flights passed in as arg

    public Itinerary(ArrayList<Flight> flights) {
        this.flights = flights;
    }

    public long getTotalFlightTime(){
        // Do stuff
    }
    public long getTotalTravelTime(){
        // Do Stuff
    }
}

然后在您的主要方法中添加以下内容:

ArrayList<Flight> flights = new ArrayList<>();
flights.addAll(F1, F2, F3);
Itinerary myItinerary = new Itinerary(flights);