2017-05-06 2 views
0

ich in einer Herausforderung teilgenommen haben, in dem die Anforderung zwei Mal zu vergleichen, ist Werte t1 und t2 und print First wenn t1 vor t2 auftritt; ansonsten print Second.Vergleich zweier Zeitwerte

Und, t1 != t2.

Probe Input:

2 
10:19PM 02:49AM 
08:49AM 09:10AM 

Beispielausgabe:

Second 
First 

Mein Code:

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

Ich bin nicht sur Was mache ich falsch? Aber nur 1 von 10 Testfällen wurde bestanden.

Können Sie sagen, was los ist?

+7

Analysieren Sie es zu einem ['LocalTime'] (https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html) und rufen Sie dann einfach '' compareTo'' an (https: //docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html#compareTo-java.time.LocalTime-). –

+3

'half1 ==" AM "' Sie können Strings nicht vergleichen. –

+0

@BoristheSpider Nicht so. Ich möchte dies durch if else Statements tun. – Nivedita

Antwort

1

half1 == "AM" Hier können Sie einen Fehler gemacht haben. Für den Vergleich von Zeichenfolgen müssen Sie die Methode String#equals() verwenden.

Also ändern Sie diese Zeile mit half1.equals("AM"). Das wird deine Arbeit machen.

0

Siehe Beispiel hier:

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"); 
    } 
    } 
} 

Der obige Code erzeugt das folgende Ergebnis:

Second

+0

Link nur Antworten sind verpönt. –

+0

Ich muss keine Klassen verwenden. – Nivedita

+0

Es ist kein Date - es ist eine Zeit. –