我尝试在HackerRank上进行Time Conversion挑战,但由于某种原因,24小时表示中的小时字段始终为空。挑战是这样的-
问题陈述
给定AM/PM格式的时间,将其转换为军事(24小时)时间。
注:午夜是12小时制的12:00:00和24小时制的00:00:00。中午是12小时制的中午12:00:00,24小时制的中午12:00:00。
另一个问题似乎是秒总是看起来是1位数。例如,如果输入是07:05:45PM
,那么我的HackerRank输出就是:05:4
。
但是,代码在我桌面上的IntelliJ中运行得很好-
1:24:23AM
1
24
23AM
01:24:23
Process finished with exit code 0
和
07:05:45PM
07
05
45PM
19:05:45
Process finished with exit code 0
由于无法在HackerRank上调试解决方案本身,我不确定出了什么问题。我的密码是这样的-
package algorithms.Warmup;
import java.util.Scanner;
/**
* Created by manishgiri on 1/6/16.
*/
public class TimeConversion {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String time = in.next();
String[] parts = time.split(":");
for(String part: parts){
System.out.println(part);
}
int hours = Integer.parseInt(parts[0]);
String minutes = (parts[1]);
String[] last = parts[2].split("");
String seconds = last[0]+last[1];
String timeZ = last[2]+last[3];
String finalHour = "";
if(timeZ.equalsIgnoreCase("PM")) {
if(hours == 12) {
finalHour = Integer.toString(12);
}
else {
finalHour = Integer.toString(hours + 12);
}
}
else if(timeZ.equalsIgnoreCase("AM")) {
if(hours == 12) {
finalHour = "00";
}
else if(hours == 10 || hours == 11) {
finalHour = Integer.toString(hours);
}
else {
finalHour = "0"+hours;
}
}
System.out.println(finalHour+":"+minutes+":"+seconds);
}
}
9条答案
按热度按时间jfewjypa1#
尝试下面的代码。希望这些评论将有助于理解其中的逻辑。
干杯!
gv8xihay2#
我不知道为什么您的JRE环境和HackerRank环境之间会有不一致。但如果我们来回答你的问题,在HackerRank中,你的代码将Part[2]分成5个部分,前导是空字符串。
这意味着如果你更新
AS
它应该运行,
为了防止初始为空字符串,您可以找到以下一些建议:
How to prevent java.lang.String.split() from creating a leading empty string?
xzlaal3s3#
你可以试试HackerRank-
wh6knrhe4#
你可以试试这个..。
pbgvytdp5#
camsedfj6#
可以在Java中尝试进行时间转换HackerRank
mcdcgff07#
试试这个:
vi4fp9gy8#
mhd8tkvw9#