2011-09-28 2 views
0

이것은 숙제이며 나는 조금 어려움을 겪고있다. 나는 toString 메서드를 전달할 것을 생각하지 않으며, 현재와 경과 시간을 얻는 방법이 정확하다는 것을 확신하지 못한다. 그런 다음 이것을 main 메소드에 전달하고 출력 명령문에 시간을 표시해야합니다. 그건 정말 내 문제가 아니에요, 난 단지 3 변수를 가질 수 있습니다, 어떻게 내가 현재 시간에서 경과 시간을 파악하고 둘 다 시간 생성자에서 모든 데이터가 개최되므로 변경하지 않고 원래 시간, 초, 분 변수를 잡아 수 있습니다 그 변수들? 나는 어떤 의미를 갖기를 바랍니다. 어떤 입력에 대해서도 감사합니다.자바 시간 클래스

package chapter_10; 


public class Time { 
    private long hour; 
    private long minute; 
    private long second; 

    public void time() { 
     long second = System.currentTimeMillis(); 
     long minute = System.currentTimeMillis(); 
     long hour = System.currentTimeMillis(); 
    } 
    public void setTime(long elapsedTime){ 
     long millisecond = System.currentTimeMillis(); 
     long second = millisecond/1000; 
     long minute = second/60; 
     long hour = minute /60; 
    } 
    public long getHour() { 
     return hour; 
    } 

    public long getMinute() { 
     return minute; 
    } 

    public long getSecond() { 
     return second; 
    } 

    public String toString(){ 
     return // what should i return here, String.towhat? 
    } 
} 

다음은 단지 명확히하기위한 것입니다. 시간 클래스 :

시간, 분 및 초에 대해 3 개의 개인 데이터 멤버를 제공하십시오. long 또는 int 유형을 사용하십시오. int를 사용하는 경우 ctors 내부로 캐스팅해야합니다. p38의 코드 2.6과 같은 코드를 사용하는 인수가없는 ctor를 추가하여 의 값을 현재 시간에서시, 분, 초로 지정하십시오. elapsedTime (더 나은 이 elapsedTime)이라는 단일 매개 변수를 취할 다른 ctor를 추가하십시오.이 값은 Unix 신기원 이후로 밀리 초입니다. 이 두 번째 ctor는 코드 2.6을 사용하여 기원 이후 경과 시간에 대해 데이터 멤버 을 설정합니다. 세 번째 공급자는 필요하지 않습니다. 각 데이터 멤버에 게터를 추가하십시오. 각 getter는 하나의 명령문 만 필요합니다. 데이터 멤버가 비공개이기 때문에 게터가 필요합니다. Time 객체의 시간, 분 및 초를 반환하는 toString 메서드를 추가합니다. 주 클래스 :

주 메서드는 Arg 인수가없는 Time 개체를 만듭니다. 다른 ctor로 몇 시간 개체를 만듭니다. 인스턴스화하는 각 개체의 시간을 표시합니다.

답변

0

개인 데이터 멤버를 제대로 설정하지 않았습니다.

time 메서드의 값은 개인 데이터 멤버를 음영 처리합니다.

걱정 되시면 toString()을 수정하십시오.

0

음, toString은 일반적으로 개체를 고유 한 방식으로 나타내는 String입니다. 여기에 당신의 물건이 시간이기 때문에, 독특한 시간은 시간으로 표현됩니다. 당신은 같은 것을 작성하는 경우

그래서 :

public String toString(){ 
     return getHour() + ":" + getMinute() + ":" + getSecond() + ":" + getMillisecond(); 
    } 

을이이 목적이 무엇인지 성공을 나타 내기 때문에 이것은, toString 메소드의 좋은 구현 될 것이다.

추신 : 밀리 초나 모든 필드가 클래스로 필드로 저장 중입니다! 그것을 확인하십시오!

편집 : 이제 알았습니다. 코드가 전혀 작동하지 않습니다. System.currentTimeMillis()는 UTC로 시간을 반환합니다. 즉, 계산이 전혀 작동하지 않습니다. 먼저 UTC에서 유효한 밀리 초 단위로 변환해야합니다. 시간 작업을 위해 Date/Calendar 클래스 사용을 고려하십시오.

+0

나는 내 두 번째 등등에서 "long"을 생략했다. 내 프로그램에서 위로 개인용으로 선언했을 때 이미 완료되었으므로 선언 할 필요가 없었다. – Gmenfan83

+0

@ Jason 그것은 "필요하지 않은 것"이상입니다. 추가 선언은 실제로 개인 필드가 값을 가져 오지 못하게하는 새 변수를 만들었습니다. – ccoakley

+0

예, 새 변수를 선언하고 따라서 클래스의 필드를 재정의합니다. 그런 경우에, 당신이 새로운 경우에, 항상이 통신 수를 사용하기 위하여 생각 나십시오. 그렇게하면 항상 옳은 일을 할 수 있습니다. – SHiRKiT

0

귀하의 질문을 완전하고 정확하게 이해한다고 보장 할 수는 없습니다. currentTimeMillis()에 대한 실제 호출 결과를 저장하는 것을 고려 했습니까?그런 다음 세 가지 변수를 가질 수 있습니다.

long startTime; 
long endTime; 
long elapsedTime; 

그런 다음 필요한 조각을 추출하면됩니까?

+0

나는 과제의 매개 변수가 그것을 허용 할 것이라고 생각하지 않는다. 세 번째 변수 인 초, 분, 시만 선언 할 수있다. – Gmenfan83

+0

공정한 게임. 나는 임무를 보지 못했다. –

+0

그게 아니라면, 여기에 간단히 설명하기 위해 누군가가 나를 위해 임무를 수행 할 것으로 기대하지 않는다 : – Gmenfan83