-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***
4

2 に答える 2

1

左から右に文字を取得しています(低から高、0から長さ)

文字を右から左に追加しています。

それはそれらを逆転させます。

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

最初のループでは、'1' を受け取り、それを文字列に入れます。

2 回目のループでは、'2' を取り、それを文字列の '1' の左側に配置します。

3 回目のループでは、'3' が '2' と '1' の左側に配置されます。

「かかる」と言うときは、コードを指しています。input.charAt(i)

'i' はループを通過するたびに大きくなることに注意してください。i++

于 2013-07-11T21:26:59.297 に答える
0

String実際には、 の文字を左から右に反復処理しながら新しい (不変の) オブジェクトを常に作成inputし、そのたびに の先頭に文字を追加する、不適切に作成されたプログラムですresultinput.charAt(i) + resultこれは、前の結果の前に文字を置くコードによって行われます。

より適切な実装StringBuilderでは、(変更可能な) a を使用して、過剰なString作成を回避します。

このような:

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);
}
于 2013-07-11T21:31:07.840 に答える