任何人都可以解释这个程序是如何运作的。
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 :(得分:1)
从左到右(从低到高,0到长度)
获取字符从右到左追加字符。
反转他们。
1 2 3
| | |
\ | /
X
/ | \
3 2 1
第一次循环,它取'1'并将其放入字符串。
第二次循环,它取'2'并将其放在'1'左边的字符串中
通过循环的口渴时间,它需要'3'并将其置于'2'和'1'的左侧。
当我说“需要”时,我指的是代码:input.charAt(i)
请注意,由于i++
答案 1 :(得分:0)
它实际上是一个编写得很糟糕的程序,它不断创建新的(不可变的)String
对象,同时从左到右迭代input
的字符,每次都将字符前加到result
。这是由代码input.charAt(i) + result
完成的,它将字符放在前一个结果的前面。
更好的实现会使用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);
}