比较两个时间值
Comparing two time values
我参加了一个挑战,要求比较两个时间值t1
和t2
,如果t1
出现在[=之前,则print First
14=];否则,print Second
.
还有,t1 != t2
.
示例输入:
2
10:19PM 02:49AM
08:49AM 09:10AM
示例输出:
Second
First
我的代码:
import java.util.*;
public class Solution {
static String timeCompare(String t1, String t2){
// Complete this function
String half1 = t1.substring(t1.length()-2); // gets AM/PM value
String half2 = t2.substring(t2.length()-2);
String time1 = t1.substring(0, t1.length()-2);
String time2 = t2.substring(0, t2.length()-2);
//System.out.println(time1);
int hour1 = Integer.parseInt(time1.split(":")[0]);
int hour2 = Integer.parseInt(time2.split(":")[0]);
int min1 = Integer.parseInt(time1.split(":")[1]);
int min2 = Integer.parseInt(time2.split(":")[1]);
if(hour1 == 12) {
hour1 = 0;
//System.out.println(hour1);;
}
if(hour2 == 12) {
hour2 = 0;
}
//System.out.println(hour1+" , "+hour2);
if(half1.equals(half2)){
// System.out.println(1);
if(hour1 == hour2){
if(min1 > min2){
return "Second";
}
else{
return "First";
}
}
else if(hour1 > hour2){
return "Second";
}
else{
//System.out.println(2);
return "First";
}
}
else if (half1 == "AM"){
return "First";
}
else{
return "Second";
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int q = in.nextInt();
for(int a0 = 0; a0 < q; a0++){
String t1 = in.next();
String t2 = in.next();
String result = timeCompare(t1, t2);
System.out.println(result);
}
}
}
我不确定我做错了什么。但是10个测试用例中只有1个通过。
你能告诉我哪里出了问题吗?
参考这里的例子:
import java.time.LocalTime;
public class Main {
public static void main(String[] args) {
LocalTime t1 = LocalTime.of(10, 10, 0)
LocalTime t2 = LocalTime.of(11, 11, 0);
int result = t2.compareTo(t1);
if(result < 0){
System.out.println("Second");
}else if(result > 0 ){
System.out.println("First");
}else{
System.out.println("Same Time");
}
}
}
上面的代码生成以下结果:
Second
half1 == "AM"
这里你弄错了。对于字符串比较,需要使用String#equals()方法。
所以用 half1.equals("AM")
更改该行。这将完成您的工作。
我参加了一个挑战,要求比较两个时间值t1
和t2
,如果t1
出现在[=之前,则print First
14=];否则,print Second
.
还有,t1 != t2
.
示例输入:
2
10:19PM 02:49AM
08:49AM 09:10AM
示例输出:
Second
First
我的代码:
import java.util.*;
public class Solution {
static String timeCompare(String t1, String t2){
// Complete this function
String half1 = t1.substring(t1.length()-2); // gets AM/PM value
String half2 = t2.substring(t2.length()-2);
String time1 = t1.substring(0, t1.length()-2);
String time2 = t2.substring(0, t2.length()-2);
//System.out.println(time1);
int hour1 = Integer.parseInt(time1.split(":")[0]);
int hour2 = Integer.parseInt(time2.split(":")[0]);
int min1 = Integer.parseInt(time1.split(":")[1]);
int min2 = Integer.parseInt(time2.split(":")[1]);
if(hour1 == 12) {
hour1 = 0;
//System.out.println(hour1);;
}
if(hour2 == 12) {
hour2 = 0;
}
//System.out.println(hour1+" , "+hour2);
if(half1.equals(half2)){
// System.out.println(1);
if(hour1 == hour2){
if(min1 > min2){
return "Second";
}
else{
return "First";
}
}
else if(hour1 > hour2){
return "Second";
}
else{
//System.out.println(2);
return "First";
}
}
else if (half1 == "AM"){
return "First";
}
else{
return "Second";
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int q = in.nextInt();
for(int a0 = 0; a0 < q; a0++){
String t1 = in.next();
String t2 = in.next();
String result = timeCompare(t1, t2);
System.out.println(result);
}
}
}
我不确定我做错了什么。但是10个测试用例中只有1个通过。
你能告诉我哪里出了问题吗?
参考这里的例子:
import java.time.LocalTime;
public class Main {
public static void main(String[] args) {
LocalTime t1 = LocalTime.of(10, 10, 0)
LocalTime t2 = LocalTime.of(11, 11, 0);
int result = t2.compareTo(t1);
if(result < 0){
System.out.println("Second");
}else if(result > 0 ){
System.out.println("First");
}else{
System.out.println("Same Time");
}
}
}
上面的代码生成以下结果:
Second
half1 == "AM"
这里你弄错了。对于字符串比较,需要使用String#equals()方法。
所以用 half1.equals("AM")
更改该行。这将完成您的工作。