2017-05-06 131 views
0

我参加了一个挑战,其中要求是比较,如果t2之前发生t1两个时间值t1t2print First;否则,print Second比较两个时间值

And,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); 
     } 
    } 
} 

我不河畔é我做错了什么。但是,只有十分之一的测试用例通过。

你能说出有什么问题吗?

+7

解析为['LocalTime'](https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html),然后只需调用['compareTo'](https: //docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html#compareTo-java.time.LocalTime-)。 –

+3

'half1 ==“AM”'你不能比较这样的字符串。 –

+0

@BoristheSpider并非如此。我想通过if语句来做到这一点。 – Nivedita

回答

1

half1 == "AM"在这里,你犯了一个错误。对于字符串比较,您需要使用String#equals()方法。

因此用half1.equals("AM")修改该行。这会做你的工作。

0

参考例子在这里:

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

+0

链接只有答案是皱眉。 –

+0

我不必使用类。 – Nivedita

+0

这不是约会 - 这是一个时间。 –