比较两个时间值

Comparing two time values

我参加了一个挑战,要求比较两个时间值t1t2,如果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") 更改该行。这将完成您的工作。