我试图让这个飞机项目工作,我不能为我的生活弄清楚如何在“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 回答
使用
代替
同样在函数
addMinutes
中使用以下内容:同时将
hour
和minute
声明为static
将导致修改这些变量将在所有实例中共享相同的值,并且一个实例中的任何修改都将导致修改所有其他实例 .After Your Comment
就当前代码而言,由于
hour
和minute
为static
,addTime
方法只会使当前时间翻倍 .既然你想将
hour
和minute
转换为实例变量,我认为addTime
的下一个过程非常简单 . 你已经声明你已经尝试了一百万件事,但却无法发布任何一件事 . 所以,我认为你没有尝试过,只是要求我们给你解决方案 . 不过,我会为您提供解决方案:除此之外,您的解决方案还有另一个AM / PM问题 . 如果在下午11:59之前添加任何分钟数,您也没有注意这个条件 .
如果您想获得其他方法的解决方案,请先尝试自己 . 然后,如果您遇到任何问题,请使用相关代码发布问题 .
修改addHours和addMinutes方法
对此
说明:每当您添加min时,它也可能会改变您的小时 . 你有新的小时和分钟 .
例如 . 添加10分钟到55分钟将增加一小时,新分钟增加5