Я пытался выполнить задание «Преобразование времени» на Hackerrank, но по какой-то причине поле часа в 24-часовом представлении всегда оказывается пустым. Вот задача:
Постановка задачи
Для указания времени в AM/PM формате, преобразуйте его в военное (24-часовое) время.
Примечание. Полночь — это 12:00:00 по 12-часовому формату и 00:00:00 по 12-часовому формату.
24-часовой формат времени. Полдень — это 12:00:00 в 12-часовом формате и 12:00:00 в
24-часовом формате.
Другая проблема заключается в том, что секунды всегда состоят из 1 цифры. Например, если входные данные — 19:05:45, мои выходные данные 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
Поскольку нет возможности отладить решение на самом хакерранке, я не уверен, в чем дело. Вот мой код -
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);
}
}
Подробнее здесь: https://stackoverflow.com/questions/346 ... empty-hour