我建议您使用java.time.Duration,它以ISO-8601 standards 为模型,并作为JSR-310 implementation 的一部分与Java-8 一起引入。 Java-9 引入了一些更方便的方法。
import java.time.Duration;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner keyb = new Scanner(System.in);
Duration duration = Duration.ZERO;
System.out.println("Welcome to the Time Adder!\n ");
System.out.println("Enter 5 time durations in minutes and seconds\n ");
System.out.print("Duration 1, how many minutes? ");
duration = duration.plusMinutes(keyb.nextInt());
System.out.print("Duration 1, how many seconds? ");
duration = duration.plusSeconds(keyb.nextInt());
System.out.print("Duration 2, how many minutes? ");
duration = duration.plusMinutes(keyb.nextInt());
System.out.print("Duration 2, how many seconds? ");
duration = duration.plusSeconds(keyb.nextInt());
System.out.print("Duration 3, how many minutes? ");
duration = duration.plusMinutes(keyb.nextInt());
System.out.print("Duration 3, how many seconds? ");
duration = duration.plusSeconds(keyb.nextInt());
System.out.print("Duration 4, how many minutes? ");
duration = duration.plusMinutes(keyb.nextInt());
System.out.print("Duration 4, how many seconds? ");
duration = duration.plusSeconds(keyb.nextInt());
System.out.print("Duration 5, how many minutes? ");
duration = duration.plusMinutes(keyb.nextInt());
System.out.print("Duration 5, how many seconds? ");
duration = duration.plusSeconds(keyb.nextInt());
// In default format
System.out.println(duration);
// Custom format
// ####################################Java-8####################################
String formattedElapsedTime = String.format("%02d:%02d:%02d", duration.toHours() % 24,
duration.toMinutes() % 60, duration.toSeconds() % 60);
System.out.println("The total of the 5 times is: " + formattedElapsedTime);
// ##############################################################################
// ####################################Java-9####################################
formattedElapsedTime = String.format("%02d:%02d:%02d", duration.toHoursPart(), duration.toMinutesPart(),
duration.toSecondsPart());
System.out.println("The total of the 5 times is: " + formattedElapsedTime);
// ##############################################################################
}
}
示例运行:
Welcome to the Time Adder!
Enter 5 time durations in minutes and seconds
Duration 1, how many minutes? 5
Duration 1, how many seconds? 10
Duration 2, how many minutes? 15
Duration 2, how many seconds? 20
Duration 3, how many minutes? 25
Duration 3, how many seconds? 30
Duration 4, how many minutes? 35
Duration 4, how many seconds? 40
Duration 5, how many minutes? 45
Duration 5, how many seconds? 50
PT2H7M30S
The total of the 5 times is: 02:07:30
The total of the 5 times is: 02:07:30
进一步改进:
我建议您对五组输入使用循环。
import java.time.Duration;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner keyb = new Scanner(System.in);
Duration duration = Duration.ZERO;
System.out.println("Welcome to the Time Adder!\n ");
System.out.println("Enter 5 time durations in minutes and seconds\n ");
for (int i = 1; i <= 5; i++) {
System.out.print("Duration " + i + ", how many minutes? ");
duration = duration.plusMinutes(keyb.nextInt());
System.out.print("Duration " + i + ", how many seconds? ");
duration = duration.plusSeconds(keyb.nextInt());
}
// In default format
System.out.println(duration);
// Custom format
// ####################################Java-8####################################
String formattedElapsedTime = String.format("%02d:%02d:%02d", duration.toHours() % 24,
duration.toMinutes() % 60, duration.toSeconds() % 60);
System.out.println("The total of the 5 times is: " + formattedElapsedTime);
// ##############################################################################
// ####################################Java-9####################################
formattedElapsedTime = String.format("%02d:%02d:%02d", duration.toHoursPart(), duration.toMinutesPart(),
duration.toSecondsPart());
System.out.println("The total of the 5 times is: " + formattedElapsedTime);
// ##############################################################################
}
}