2017-09-27 107 views
0

我试图计算时钟的小时分秒钟秒针的角度。我计算出了计算结果,但我在格式化用户输入时遇到了问题。 这是我想...将用户输入限制为HHMMSS

录入时间:235429 二小时:176.76度 分秒:152.9度 小时分钟:30.34度

正如你所看到的,我想将用户输入的格式设置为HHMMSS,但我不知道如何格式化它。你们可以给我任何想法如何格式化用户输入,它可以检测到每个两个单独的字符,如HH,MM和SS吗? T 非常感谢您的时间。

+1

你见过[documentation](https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html)吗? –

回答

1

使用Java 8 LocalTimeDateTimeFormatter使用模式"HHmmss"传递给parse()

String userInput = "235429"; 

LocalTime time = LocalTime.parse(userInput, DateTimeFormatter.ofPattern("HHmmss")); 
System.out.println("Hour : " + time.getHour()); 
System.out.println("Minute: " + time.getMinute()); 
System.out.println("Second: " + time.getSecond()); 

输出

Hour : 23 
Minute: 54 
Second: 29 

如果用户给出坏输入,例如236429,它抛出异常:

java.time.format.DateTimeParseException:文本 '236429' 无法解析:用于MinuteOfHour无效值(有效值0 - 59):64

陷阱的检测并处理来自用户的无效输入异常。

try { 
    LocalTime time = LocalTime.parse(userInput, DateTimeFormatter.ofPattern("HHmmss")); 
} catch (DateTimeParseException e){ 
    … // Handle invalid user’s invalid input. 
} 
+0

无论如何,我可以将3个输入组合成一个输入吗?像输入= HHMMSS; –

+2

@HyunMoLukeYang'235429' * * * 3个值(小时,分钟和秒)合并为一个格式为“HHMMSS”。我不明白你在问什么。 – Andreas

+0

哦,我的意思是,而不是列出3个不同的输入,如 小时:23 分钟:54 第二:29 –