-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'并将其放入'1'左侧的字符串中

循环的第一次,它需要'3'并将其放在'2'和'1'的左侧。

当我说“它需要”时,我指的是代码:input.charAt(i)

请注意,“i”每次通过循环都会变大,因为i++

于 2013-07-11T21:26:59.297 回答
0

它实际上是一个写得很糟糕的程序,它不断地创建新的(不可变的)对象,同时从左到右String迭代 的字符,每次都将字符添加到. 这是通过将字符放在前一个结果前面的代码来完成的。inputresultinput.charAt(i) + result

更好的实现将使用 a StringBuilder(它是可变的)来避免过度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 回答