首页 文章

如何通过Java中的addHours()方法添加时间

提问于
浏览
-2

我试图让这个飞机项目工作,我不能为我的生活弄清楚如何在“public void addHours()”中添加时间,或者如果我甚至做了前面的正确!任何帮助都会很棒!

问题有待回答:

创建一个Time类 . 该课程将代表一个时间点,例如出发时间 . 它应该包含2个构造函数,2个实例变量(小时和分钟)和10个方法(见下文) . 除了toString之外的所有方法都应该是24小时格式 . default constructor:为12:00 AM创建一个Time对象 . 重载的构造函数:在特定的小时和分钟创建一个Time对象 . getHour():返回表示Time对象的小时的整数 . getMinute():返回表示Time对象分钟的整数 . addHours(...):通过将对象向前移动数小时来更新对象 . addMinute(...):通过将对象向前移动几分钟来更新对象 . (提示:请注意,不要让分钟数超过59.)addTime(...):通过从另一个Time对象向前移动小时和分钟来更新对象 . getCopy(...):返回一个新的Time对象,该对象具有与现有Time对象相同的小时和分钟 . isEarlierThan(...):如果此Time对象早于另一个Time对象,则返回true . isSameTime(...):如果此Time对象与另一个Time对象相同,则返回true . isLaterThan(...):如果此Time对象晚于另一个Time对象,则返回true . toString():返回表示Time对象的字符串 . 使用12小时AM / PM格式并将分钟数分为两位数 . 有关示例,请参阅示例输出 .

到目前为止,这是我的Time类:

public class Time {
    public static int hour;
    public static int minute;

    public Time() {
    }
    public Time(int h, int m) {
        h = hour;
        m = minute;
    }
    public int getHour() {
        return hour;
    }
    public int getMinute() {
        return minute;
    }
    public void addHours(int h) {
        h = h + hour;
    }
    public void addMinutes(int m) {
        //Minute should not allow past 59 minutes.
        if (m <= 59)
        m = m + minute;
    }
    public void addTime(Time other) { 
    }
    public Time getCopy() {
        //need to fix return statement
        return null;
    }
    public boolean isEarlierThan(Time other) {
        return (Boolean) null;
        //need to fix return statement.
    }
    public boolean isSameTime(Time other) {
        return (Boolean) null;
        //need to fix return statement.
    }
    public boolean isLaterTHan(Time other) {
        return (Boolean) null;
        //need to fix return statement.
    }
    public String formatDigits(int i) {
        return null;
        //need to fix return statement.
    }
    public String toString() {
        return null;
    }

}

以下是驱动程序:

public class Driver {
    public static void main(String[] args) {

        //Please note that these tests are not comprehensive.
        //testAirline();
        //testAirport();
        //testPlane();
        //testTime();
        //testFlight();
    }

    public static void testAirline() {
        System.out.println("==testAirline()==");
        /*
        //Test 1: create enum variables
        Airline a1 = Airline.American;
        Airline a2 = Airline.United;
        Airline a3 = Airline.Delta;
        Airline a4 = Airline.United;

        //Test 2: display and compare variables
        System.out.println("a1: " + a1);
        System.out.println("a2 == a3: " + (a1 == a2));
        System.out.println("a2 == a4: " + (a2 == a4));
        */
    }

    public static void testAirport() {
        System.out.println("==testAirport()==");

        /*
        //Test 1: create enum variables
        Airport a1 = Airport.PHX;
        Airport a2 = Airport.LAX;
        Airport a3 = Airport.SFO;
        Airport a4 = Airport.NRT;
        Airport a5 = Airport.SIN;

        //Test 2: display and compare variables
        System.out.println("a1: " + a1);
        System.out.println("a2 == a3: " + (a1 == a2));
        System.out.println("a2 == a4: " + (a2 == a4));
        System.out.println("a1: " + Airport.getAirportCity(a1));
        System.out.println("a3: " + Airport.getAirportCity(a3));
        System.out.println("a5: " + Airport.getAirportCity(a5));
        */
    }

    public static void testPlane() {
        System.out.println("==testPlane()==");
        /*

        //Test 1: create plane objects
        Plane p1 = new Plane(Airline.Delta, "Boeing 717");
        Plane p2 = new Plane(Airline.United, "Airbus A321");

        //Test 2: display plane information.
        System.out.println(p1.getAirline());
        System.out.println(p1.getModel());
        System.out.println(p1);
        System.out.println(p2);
        */
    }

    public static void testTime() {
        System.out.println("==testTime()==");

        /*
        //Test 1: use default constructor.
        Time t1 = new Time();

        //Test 2: use overloaded constructor.
        Time t2 = new Time(9, 0);
        Time t3 = new Time(1, 15);

        //Test 3: use clone operation.
        Time t4 = t3.getCopy();

        //Test 4: run toString on AM times.
        System.out.println(new Time(0, 5));
        System.out.println(new Time(1, 15));
        System.out.println(new Time(2, 45));
        System.out.println(new Time(10, 5));
        System.out.println(new Time(11, 15));
        //Test 5: run toString on PM times.
        System.out.println(new Time(12, 45));
        System.out.println(new Time(13, 5));
        System.out.println(new Time(22, 15));
        System.out.println(new Time(23, 45));

        //Test 6: run toString on object from default constructor.
        System.out.println("t1: " + t1);

        //Test 7: testing addTime operation
        System.out.println("t2: " + t2);
        t2.addTime(t3);
        System.out.println("t2: " + t2);
        //Test 8: testing addMinutes operation
        t2.addMinutes(181);
        System.out.println("t2: " + t2);
        //Test 9: testing8 addHours operation
        t2.addHours(2);
        System.out.println("t2: " + t2);

        //Test 10: testing cloned copy.
        t4.addHours(1);
        System.out.println("t3: " + t3);//original
        System.out.println("t4: " + t4);//clone

        //Test 11: testing isEarlierThan.
        System.out.println("t3 < t4: " + t3.isEarlierThan(t4));
        System.out.println("t4 < t3: " + t4.isEarlierThan(t3));
        System.out.println("t2 < t4: " + t2.isEarlierThan(t4));
        System.out.println("t4 < t2: " + t4.isEarlierThan(t2));
        System.out.println("t2 < t2: " + t2.isEarlierThan(t2));

        //Test 12: testing isLaterThan.
        System.out.println("t2 > t4: " + t2.isLaterThan(t4));
        System.out.println("t4 > t2: " + t4.isLaterThan(t2));
        System.out.println("t4 > t4: " + t4.isLaterThan(t4));

        //Test 13: testing isSameTime.
        System.out.println("t2 = t4: " + t2.isSameTime(t4));
        System.out.println("t4 = t4: " + t4.isSameTime(t4));
        System.out.println("t4 = 2:15AM: " + t4.isSameTime(new Time(2, 15)));
        */
    }

    public static void testFlight() {
        System.out.println("==testFlight()==");
        /*
        //Test 1: create flights using different settings
        Flight f1 = new Flight(new Plane(Airline.American, "Airbus A321"), 
                               "495", 
                               79,
                               new Time(11,5), 100,
                               Airport.PHX, Airport.LAX);

        Flight f2 = new Flight(new Plane(Airline.Delta, "Boeing 717"),
                               "1063",
                               79,
                               new Time(7, 10),
                               95,
                               Airport.PHX,
                               Airport.LAX);

        Flight f3 = new Flight(new Plane(Airline.American, "Airbus A321"),
                               "400",
                               44,
                               new Time(21, 25),
                               127,
                               Airport.PHX,
                               Airport.SFO);

        Flight f4 = new Flight(new Plane(Airline.United, "Boeing 787"),
                               "400",
                               525,
                               new Time(10, 50),
                               715,
                               Airport.LAX,
                               Airport.NRT);

        Flight f5 = new Flight(new Plane(Airline.United, "Boeing 737"),
                               "414",
                               59,
                               new Time(6, 50),
                               85,
                               Airport.LAX,
                               Airport.SFO);


        System.out.println(f1.toDetailedString()); 
        System.out.println();
        System.out.println(f1.toOverviewString());

        System.out.println();
        System.out.println();

        System.out.println(f5.toDetailedString()); 
        System.out.println();
        System.out.println(f5.toOverviewString());
        */
    }
}

2 回答

  • 2

    使用

    hour += h;
    

    代替

    h = h + hour;
    

    同样在函数 addMinutes 中使用以下内容:

    minute += m;
    if(minute > 59){
        hour += minute/60;
        minute = minute%60;
    }
    

    同时将 hourminute 声明为 static 将导致修改这些变量将在所有实例中共享相同的值,并且一个实例中的任何修改都将导致修改所有其他实例 .

    After Your Comment

    就当前代码而言,由于 hourminutestaticaddTime 方法只会使当前时间翻倍 .

    既然你想将 hourminute 转换为实例变量,我认为 addTime 的下一个过程非常简单 . 你已经声明你已经尝试了一百万件事,但却无法发布任何一件事 . 所以,我认为你没有尝试过,只是要求我们给你解决方案 . 不过,我会为您提供解决方案:

    public void addTime(Time other){
        addHours(other.getHour());
        addMinutes(other.getMinute());
    }
    

    除此之外,您的解决方案还有另一个AM / PM问题 . 如果在下午11:59之前添加任何分钟数,您也没有注意这个条件 .

    如果您想获得其他方法的解决方案,请先尝试自己 . 然后,如果您遇到任何问题,请使用相关代码发布问题 .

  • -1

    修改addHours和addMinutes方法

    public void addHours(int h) {
        h = h + hour;
    }
    public void addMinutes(int m) {
        //Minute should not allow past 59 minutes.
        if (m <= 59)
        m = m + minute;
    }
    

    对此

    public void addHours(int h) {
        hour += h;
    }
    public void addMinutes(int m) {
        minute += m;
       if(minute > 59){
           hour += minute/60;
           minute = minute%60;
       }
    }
    

    说明:每当您添加min时,它也可能会改变您的小时 . 你有新的小时和分钟 .

    例如 . 添加10分钟到55分钟将增加一小时,新分钟增加5

相关问题