2011-01-14 4 views
0

이것은 제가 이전에 물어 본 질문과 관련이 있습니다. 클래스에 toString() 메서드를 추가하고 있습니다. 클래스는 정수의 스택을 사용하여 임의로 긴 자연수를 만듭니다. 나는 단지 증가하고 감소하고 있기 때문에, 스택은 좋은 방법으로 보였다. 어쨌든, 나는 다음과 같은 코드에서 모든 출력하지 않습니다 : 그것은 System.out.println(b4.toString()); 객체에 의해 호출toString() 메서드를 사용하는 새로운 클래스

public String toString() { 
    String out_final = "", backwards = "", temp_str = ""; 
    Integer temp_int = 0; 
    Character temp_char = ' '; 

    while(!number.empty()) { 
     temp_int = number.pop(); 
     temp_str = temp_int.toString(); 
     backwards.concat(temp_str); 
    } 

    while(backwards.length() > 0) { 
     temp_char = backwards.charAt(backwards.length() - 1); 
     temp_str = temp_char.toString(); 
     out_final.concat(temp_str); 
    } 
    return out_final; 
} 

number 역 (분명히 스택의 끝에서 내 Stack<Integer> 내가 야해 테이크를 말한다) 다음 다시 올바르게 반대로 인쇄하십시오. 어쨌든,이 서둘러,하지만 도움이 항상 감사합니다!

+0

Integer를 int로, Character를 char로 변경하는 것이 더 빠르고 효율적이기 때문에 변경할 수 있습니다. – tanyehzheng

+0

만약 내가 그런 자바 놈이 아니었다면. 지금은 효과가 있습니다. 신이 내가 폭발 할만한 간단한 것을 바꿀 지 안다. 언제나처럼, 나는 피드백을 사랑한다! – V1rtua1An0ma1y

답변

7

문자열은 불변 :


backwards.concat(temp_str); 


backwards = backwards.concat(temp_str); 

그리고 out_final 연결과 동일해야한다.

스택이 상당히 큰 경우 StringBuilder이 유용하고 더 효율적일 수 있습니다.

+2

StringBuilder가 권장되는 옵션입니다. StringBuffer는 사용되지 않거나 사용하지 않는 것이 좋습니다 (사용하지 않는 것이 좋습니다.) – Marcelo

+0

좋은 지적입니다! -Edited- – jerluc

+0

지금 올바른 형식으로 결과물을 출력하고 있기 때문에 올바른 길을 가고 있습니다. 고맙습니다. :) – V1rtua1An0ma1y

관련 문제