【发布时间】:2023-03-23 11:39:01
【问题描述】:
我正在做我教授的家庭作业,要求我写一个类来表示以小时和分钟为单位的时间。我必须能够在时间上加上小时,从时间中减去小时,在时间上加上分钟,从时间中减去分钟。我坚持要增加分钟的时间。如果时间是 11:00,我想增加 90 分钟。正确的输出是 12:30。但是对于我的代码,我的输出总是 12。有人可以帮我修改我的代码,这样添加分钟就可以了吗?因为我也需要它来计算如何减去分钟数。
import java.util.Scanner;
public class Time {
private int hour;
private int minute;
public Time() {
}
public Time(int newHour, int newMinute) {
setTime(newHour, newMinute);
}
public void setTime(int h, int m) {
setHour(h);
setMinute(m);
}
public void setHour(int h) {
hour = ((h >= 0 && h < 24) ? h : 0);
}
public void setMinute(int m) {
minute = ((m >= 0 && m < 60) ? m : 0);
}
public int getHour() {
return hour;
}
public int getMinute() {
return minute;
}
public void addHours(int h) {
setHour(hour + h);
if (hour == 12)
hour = 12;
else if (hour > 12)
hour = hour - 12;
}
public void subtractHours(int h) {
setHour(hour - h);
if (hour == 0)
hour = 12;
else if (hour > 12)
hour = hour - 12;
if (hour == 12)
hour--;
}
public void addMinutes(int m) {
setMinute(minute + m);
if (m > 60)
m = m + minute;
else if (m <= 60)
m = m + minute;
addHours(m / 60);
}
public void subtractMinutes(int m) {
setMinute(minute - m);
if (m > 60)
m = minute - m;
else if (m <= 60)
m = minute - m;
if (m <= 60)
hour += minute / 60;
else if (m <= 60)
minute += minute % 60;
}
@Override
public String toString() {
return "DateAndTime [hour=" + hour + ", minute=" + minute + "]";
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter the time");
System.out.print("Hours: ");
int hour = input.nextInt();
System.out.print("Minutes: ");
int minute = input.nextInt();
Time time = new Time(hour, minute);
boolean done = false;
while (!done) {
System.out.println("1. Add Hours");
System.out.println("2. Subtract Hours");
System.out.println("3. Add Minutes");
System.out.println("4. Subtract Minutes");
System.out.print("Choice: ");
switch (input.nextInt()) {
case 1:
time.addHours(input.nextInt());
break;
case 2:
time.subtractHours(input.nextInt());
break;
case 3:
time.addMinutes(input.nextInt());
break;
case 4:
time.subtractMinutes(input.nextInt());
break;
}
System.out.println("Time is: " + time.toString());
}
}
}
【问题讨论】:
标签: java eclipse object time java.util.scanner