2017-03-01 3 views
1

이것은 숙제를위한 것입니다. 내 강사의 허락하에 여기에 게시하고 있습니다. 할당은 일년 중 이전에 생성 된 클래스에 메소드를 추가하여 두 배 사이의 차이 (시간과 분)를 찾는 것입니다. 제가 가지고있는 문제는 코스 웹 사이트의 코드 러너가 상당히 멀리 떨어져있는 두 시간의 차이를 찾을 때 오류가 발생한다고 말합니다. 그러나 제공된 러너를 사용하면 조합을 만들 수 없습니다. 내가 작성한 코드가 깨지는 시간. 다음은 코드입니다.두 시간의 차이를 찾을 때의 문제

public class Time implements Comparable 
{ 
    private int hour; 
    private int minute;  

    public Time() 
    { 
     hour = 0; 
     minute = 0; 
    } 

    public Time(int h, int m) 
    { 
     if (h>=1&&h<=23) 
      hour = h; 
     else hour = 0; 
     if (m>=0&&m<=59) 
      minute = m; 
     else minute = 0; 
    } 

    public String toString() 
    { 
     String hourStr = new String(); 
     String minStr = new String(); 
     if (hour<10) 
      hourStr = "0" + Integer.toString(hour); 
     else hourStr = Integer.toString(hour); 
     if (minute<10) 
      minStr = "0" + Integer.toString(minute); 
     else minStr = Integer.toString(minute); 
     String milTime = hourStr + minStr; 
     return (milTime); 
    } 

    public String difference(Time t) 
    { 
     int base = Integer.parseInt(toString()); 
     int compy = Integer.parseInt(t.toString()); 
     int comp = Math.abs(compy-base); 
     if (comp%100>=60) { 
      comp-=(comp%100-(60-Math.abs((compy%100)-(base%100)))); 
     } 
     String reee = "000" + Integer.toString(comp); 
     reee = reee.substring(reee.length()-4, reee.length()); 
     reee = reee.substring(0, 2) + ":" + reee.substring(2,4); 
     reee = "Time difference: " + reee; 
     return reee; 
    } 
} 

일부 관련없는 방법을 삭제했습니다. 다음은 나에게 제공 한 주자의 코드의 특정 블록 :

Time t4 = new Time(12, 40); 
    Time t5 = new Time(5, 45); 
    System.out.println(t4.compareTo(t5)); 
    System.out.println(t5.compareTo(t4)); 
    System.out.println("Difference"); 
    System.out.println(t4.difference(t5)); 
    System.out.println(t5.difference(t4)); 
    System.out.println(t4.difference(t4)); 

은 compareTo 부분이 잘 작동,하지만 차이 방법은 웹 사이트 내가 잘못이 말씀입니다. 그러나 Times t4와 t5를 어떤 조합으로 바꾸어도 문제가되지 않습니다. 웹 사이트를 상상할 수있는 코드에 문제가 있다는 것을 알고 있습니까?

+0

테스트 대상 웹 사이트가 "웹 사이트"에 포함되지 않았기 때문에이 질문을 주제와 관련이 없도록 닫으려고합니다. 당신과 당신의 웹 사이트 사이의 문제를 어떻게 해결할 수 있습니까? – ControlAltDel

+1

왜 원시 형식을 사용하고 있습니까 ?????? –

+1

t4-t5와 t5-t4를 다르게 고려할 수 있습니다. 귀하의 예에서는 t4-t5 = t5-t4 = 6 : 55이지만 t5-t4도 17:05 일 수 있습니다. 그래서 나는 그것이 약간의 문제를 만들고 있을지도 모른다라고 생각한다. – Sanjeev

답변

1

9:55와 10:05의 차이 - 10 분에 동의합니까?

이제
Time t4 = new Time(10, 5); 
    Time t5 = new Time(9, 55); 

프로그램 인쇄 : 10

지난 10 ~ 5 분 5 분에서 나는에 t4t5 변경이 어떤 웹 사이트는 내 생각은

Difference 
Time difference: 00:50 
Time difference: 00:50 
Time difference: 00:00 

입니다

것을 에 반대하고있다.

Integer.parseInt(toString())의 결과를 뺍니다. 나는 이것이 소리라고 생각하지 않는다. 차이가 50 인 경우 9:05부터 9:55까지 (실제로 50 분) 또는 9:55부터 10:05 (단 10 분만)인지 여부를 알 수 없습니다. 따로 따로 시간을 빼고 분을 따로 뺀 다음 두 가지 차이점이 반대 기호 인 경우 특히 조정을해야합니다.