java中的时间和小时


import java.util.Scanner;
public class Nc3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter time of arrival: ");
double time = input.nextDouble();
int arrivalTime;
arrivalTime = 0;
arrivalTime += time;
if (time % 20 != 0) {
time %= 20;
time = 20 - time;
System.out.println(arrivalTime +time);
}
else if (((arrivalTime + time) % 100) == 60.0) {
time += 40;
System.out.println(arrivalTime + time);
}
else
System.out.println("Now - " +arrivalTime);
}
}

我被要求编写一个程序,获取当前时间的输入,并返回下一辆公共汽车将在什么时候离开,知道每20分钟有一辆公共汽车在00,20,40开出问题是,如果我输入2243,代表22:43,我将返回2260而不是2300

java.time

我建议您使用基于ISO-8601标准建模的java.time.Duration,并在Java-8中引入,作为JSR-310实现的一部分。

演示:

import java.time.Duration;
import java.time.LocalTime;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter time of arrival: ");
showNextDepartureTime(input.nextLine());
}
static void showNextDepartureTime(String arrivalTime) {
Duration nextDeparture = Duration.between(LocalTime.MIN, LocalTime.parse(arrivalTime));
int remainder = nextDeparture.toMinutesPart() % 20;
if (remainder != 0)
nextDeparture = nextDeparture.minusMinutes(remainder).plusMinutes(20);
System.out.printf("The next departure is at %2d:%02d", nextDeparture.toHoursPart(),
nextDeparture.toMinutesPart());
}
}

示例运行:

Enter time of arrival: 22:43
The next departure is at 23:00

另一个示例运行:

Enter time of arrival: 22:00
The next departure is at 22:00

更新正如Lino在他的评论中建议的那样,你可以这样替换if主体:

if (remainder != 0)
nextDeparture = nextDeparture.plusMinutes(20 - remainder);

最新更新