2013-07-11 4 views
-4

누구든지이 프로그램의 작동 방식을 설명 할 수 있습니까?역 문자열 코드는 어떻게 작동합니까?

public static void main(String args[]){ 
    String input ="***NGuyen**Van******A*******"; 
    String result =""; 
    for(int i = 0 ; i < input.length() ; i++) 
    { 

      result = input.charAt(i) + result ; 

     } 


    System.out.println(result); 

}}

출력 것이다

*******A******naV**neyuGN*** 
+0

어떤 언어? – PermGenError

+0

자바 언어 11 –

답변

1

그것은 그것은를 추가한다

(0 길이로 오름차순) 왼쪽에서 오른쪽으로 문자지고 오른쪽에서 왼쪽으로 문자.

그 반대입니다.

1 2 3 
| | | 
\ |/
    X 
/| \ 
3 2 1 

처음 루프를 통과하면 '1'이 걸리고 문자열에 넣습니다.

루프 통해

두번째, 그것은 '2'를 취하고 '1'

왼쪽에있는 캐릭터에 넣 루프를

갈증 때이를 '3'소요의 왼쪽에두고 '2'와 '1'.

내가 코드를 말하는 겁니다 "가됩니다"라고 다음은 '내가'때문에 i++

+0

고맙습니다. 지금은 아이디어가 있습니다.하지만 설명했던대로 왼쪽에서 오른쪽으로 낮은 값에서 높은 값으로 루프를 변경하는 방법을 알고 싶습니다. –

0

의 루프를 통해 더 큰 각 시간을 얻을 수 있음을 input.charAt(i)

주 그것은 실제로 심하게입니다 문자가 result 앞에 붙을 때마다 왼쪽에서 오른쪽으로 input의 문자를 반복하면서 새로운 (변경 불가능한) String 객체를 지속적으로 생성하는 작성된 프로그램입니다. 이것은 문자 input.charAt(i) + result에 의해 이루어지며 이전 결과 앞에 문자를 놓습니다.

더 나은 구현은 String 생성을 피하기 위해 StringBuilder (변경할 수 있음)을 사용합니다. 이처럼

:

public static void main(String args[]) { 
    String input = "***NGuyen**Van******A*******"; 
    StringBuilder builder = new StringBuilder(); 
    String result; 
    for (int i = input.length() - 1; i >= 0; i--) { 
     builder.append(input.charAt(i)); 
    } 
    result = builder.toString(); 

    System.out.println(result); 
} 
+0

나는 그것이 당신이 의미했던 것입니다. –

+0

당신은 무엇을 했습니까? – herman

+0

나는 그것이 당신이 "StringBuilder input = new StringBuilder ("*** NGuyen ** Van ****** A ******* ")라고 말한 것입니다;"이후로 처음 사용했습니다. 아직 프로그래밍 초급. 감사. –

관련 문제