2010-11-27 7 views
1

저는 Java에 익숙하지 않습니다. 정말 혼란 스럽습니다.다른 클래스의 메서드 사용

두 클래스가 있습니다. 하나 (controlNumber)는 숫자에 사용되는 두 개의 int 필드를 가지며, 하나는 현재 숫자이고 다른 하나는 최대 숫자입니다 (현재 숫자가이 숫자에 도달하면 숫자가 1로 재설정됩니다). 생성자는 현재 숫자를 1로 초기화하고 max를 매개 변수로 취합니다 (최대가 100보다 작고 100보다 작은 지 확인).
나는 현재의 숫자를 반환하는 메소드, 최대 숫자를 반환하는 숫자, 최대 값을 현재 값으로 설정하는 값, 현재 숫자에 1을 더하는 값 (최대 값을 향한 값) 및 마지막으로 반환하는 값을 반환하는 메소드가 있습니다. 현재 숫자가 하나의 숫자 일 경우 앞에 "0"을 넣는 현재 숫자가있는 문자열 (5는 05가됩니다).
있으며, toString는 다음과 같습니다

이 클래스는 잘 작동합니다.
두 번째 클래스는 문제가 생기기 시작하는 곳입니다. 위 클래스의 두 필드가 있습니다. 생성자는 두 개의 서로 다른 최대 값으로 초기화합니다. 이 모든 것이 효과가있는 것 같습니다.
이제 toString 메서드가 필요합니다. 두 필드의 현재 값을 가진 문자열을 반환합니다. "/"와 "0"앞에 한 자리가 있으면 (즉, 일이 3이고 월이 11 일 경우 ' "03/11"을 반환합니다). 내 첫 번째 생각은 내가 Integer.toString과 함께 사용했던 것과 같은 것을 사용하는 것이었지만 controlNumber 클래스의 필드가 int 인 경우에도 그렇게 할 수 없다는 것이 드러났습니다. 그래서 나는 위의 (다른 클래스에있는) 내 메서드를 사용하여 내가 원하는 것 대부분을 생각했지만, 어떻게 해야할지 모르겠습니다.

나는 이해했으며 누군가 내 문제를 해결하는 방법을 찾도록 도울 수 있기를 바랍니다.

답변

1

위의 유형의 두 개의 필드가있는 경우는, a와 b

public String toString() { 
    return a + "/" + b; 
} 
전화 : 같이 다시

어쨌든 동작이므로 명시 적으로 toString()을 호출 할 필요가 없습니다. 유일한 차이점은 a 또는 b가 null 인 경우 this는 "null"을 출력하고 toString()은 NullPointerException을 발생시킵니다.,

public class StringUtil { 

    public static String format(int i) { 
     if (i > 9) { 
      return String.valueOf(i); 
     } else { 
      return ("0" + String.valueOf(i)); 
     } 
    } 

} 

을 지금 :

첫째, 정수에게를 포맷하는 유틸리티 함수를 만들 :

은 BTW 당신은 ​​

public String toString() { 
    return (currentNumber > 9 ? "" : "0") + currentNumber; 
} 
+0

감사합니다 대단히

public String toString() { return StringUtil.format(currentNumber); } 

public String toString() { return StringUtil.format(max1) + "/" + StringUtil.format(max2); } 
GeorgeWChubby

+2

삼항 연산자를 사용하는 것이 그가 갖고있는 것의 큰 개선이지만 문자열을 올바르게 포맷하는 습관을 갖게됩니다. String.format ("% 1 $"+ n + "0", s); 문자열 s의 길이가 n보다 작 으면 왼쪽 패딩 된 문자열 0을 반환합니다. 그래서 n = 4 및 s = "3"이라고 말하면 리턴은 "0003"이됩니다. – bitxwise

1

난 당신이 클래스 유형 ControlNumber 두 개의 필드가 SomeClass을 의미 가정, 당신은 필드의 결합 된 값을 인쇄 할 SomeClass.toString()을 구현하고자합니다. 이 경우에, 당신은 같은 것을 할 것입니다 :

class SomeClass 
{ 
    ControlNumber number1; 
    ControlNumber number2; 

    [...] 

    public String toString() 
    { 
     return number1.toString() + "/" + number2.toString(); 
    } 
} 

업데이트 : 베드로가 지적했듯이

, number.toString()에 대한 명시 적 호출이 탈락 될 수 있고, 따라서 위의 수

public String toString() 
    { 
     return number1 + "/" + number2; 
    } 
+0

감사합니다. a와 b는 null이 될 수 없습니다 (내 코드가 심하게 엉망인 경우 : P). – GeorgeWChubby

0

에 나는이 접근 할 방법을 당신의 방법을 단축 할 수 다른 클래스의 유틸리티 코드를 사용할 수 있습니다 :

당신의 도움
관련 문제