我看到很多刚接触Java的人要求这个,但不是我的方式。我看到了很多关于如何进行这种转换的好信息,我喜欢很多想法,但没有一个直接代表我遇到的问题。
我要求用户提供三个表示当前时间的Ints,问题是,当他们每小时输入00时,它会重复一个双零而不是12.我无法弄清楚如何告诉它。我会使用if(小时== 00)小时= 12
我该如何正确地说出来?另外,我需要在09:15:15 AM以1比9的时间在前面说0小时 而不是上午9:15:15我的导师说使用打印F但这将破坏我当前的代码。这是错误的做法吗?
非常感谢帮助。
这是我到目前为止的代码。
import java.util.Scanner;
public class ps5 {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter a time value in the following format: HH MM SS");
int hour = keyboard.nextInt();
int minute = keyboard.nextInt();
int second = keyboard.nextInt();
int trueHour = hour.
if (hour < 23 && hour >= 0)
if (hour > 11)
{
if (hour == 12) hour = 24;
System.out.printf("%02d:%02d:%02dPM\n", (hour - 12), minute, second);
}
else
{
if (hour == 00) hour = 12;
System.out.printf("%02d:%02d:%02dAM\n", hour , minute, second);
}
else
System.out.print("Hour must be between 0 and 23 inclusive.");
}
}
答案 0 :(得分:1)
为什么不使用java time api而不是自己做所有的转换呢?
这会使用java.time.LocalTime和java.time.format.DateTimeFormatter进行转换,并且应该能够替换if语句中的所有内容。您仍然需要进行自己的输入验证。
LocalTime time = LocalTime.of(hour,minute,second);
System.out.println(time.format(DateTimeFormatter.ofPattern("hh:mm:ss a")));
由于我不在工作,我遗憾地无法验证这是否有效,但这应该是一个不错的起点。
答案 1 :(得分:0)
你非常接近:
String ampm = "AM";
// You check hour but not minute or second
if (second >= 0 && second < 60 && minute >= 0 && minute < 60 && hour <= 23 && hour >= 0) {
// Check PM
if (hour >= 12) {
// Only subtract when hour != 12
if (hour > 12) {
hour -= 12;
}
ampm = "PM";
}
else if (hour == 0) {
hour = 12;
}
// Instructor says use printf...
System.out.printf("%d:%02d:%02d %s", hour, minute, second, ampm);
}
else {
// Print an error....
}