2014-09-20 9 views
-1

테스트에 문제가 있습니다. 그것은 단순한 것처럼 보입니다. 공백을 삭제하기 만하면되지만 어떤 이유로 든 오류가 계속 발생합니다. 테스트 중 오류가 발생했습니다.

@Override 
    public String format(String template) { 
     if(template.equals("%t")){ 
      return String.format("%02 seconds", getSeconds()); 
     } 
     else if(template.equals("%h:%M:%S")) { 
      return String.format("%02d:%02d:%02d", getHours(), getMinutes(), getSeconds()); 
     } 
     else if(template.equals("%d days, %h hours, %m minutes, and %s seconds")){ 
      return String.format("%d days,%2d hours,%2d minutes, and %2d seconds", getDays(), getHours(), 
        getMinutes(), getSeconds()); 
     } 
     else return null; 

    } 


@Test 
    public void testFormatExample1() { 
     assertEquals("3 days, 4 hours, 0 minutes, and 9 seconds", 
       fromDHMS(3, 4, 0, 9) 
         .format("%d days, %h hours, %m minutes, and %s seconds")); 
    } 

내가

3 days, 4 hours, 0 minutes, and 9 seconds 

을 얻어야한다 무엇 아직 내가 and 9 seconds

에 여분의 공간을 제거하기 위해 모든 노력을했습니다

Expected :3 days, 4 hours, 0 minutes, and 9 seconds 
Actual :3 days, 4 hours, 0 minutes, and 9 seconds 

점점 계속 것입니다

if 문 마지막 사례로 가서사이의 공백을 삭제하면및 %2d seconds, 여전히 작동하지 않습니다. 나는 그것을하기 전에 공간을 위해 그 일을했습니다.

누구든지 문제를 알고 있습니까?

+0

'fromDHMS()'의 코드는 어디에 있나요? –

+0

필요 없다고 생각했습니다 –

답변

4

문제는 단지 %2d입니다. 은 명시 적으로에 최소 2 자로 변환 할 시간 (초)을 요청했습니다. 그냥 %d으로 만들어 주면됩니다. 자세한 내용은 Formatter documentation을 참조하십시오.

시간이 10 시간 이상 10 분 이상이면 예상되는 결과를 얻지 못할 수도 있습니다. 쉼표 뒤에 공백이 없어야합니다. 난 당신의 형식 문자열 싶은 생각 : 난 단지 아주 특정 입력 템플릿을 받아들이는 것은 매우 좋은 생각이라고 생각하지 않는다, 그러나, 여담으로

"%d days, %d hours, %d minutes, and %d seconds" 

을 - 그 지원할 필요하다면, I 대신 그들을 표현하기 위해 enum을 사용합니다.

+0

고마워요. 이제 이해가된다. –

관련 문제