在下面的代码中,我试图反向打印句子。这个对我有用。
我不明白为什么它先打印“七个”而不打印“一个”。
据我下面在for-each循环中的知识,意思是“单词列表”中的“单词”,即原始单词和迭代单词。然后在下一个语句中,先“单词”,然后“反转”。
为什么索引从0开始时先打印“七”而不打印“一”?为什么最后一个索引排在第一位?如果我弄错了,请纠正我。
任何帮助将不胜感激。请参见下面的代码:
public class String_Reverse {
public static void main(String[] args) {
String s = "one two three four five six seven";
System.out.println(reverse(s)); // seven six five four three two one
}
public static String reverse(String str) {
String reversed = "";
String[] original = str.trim().split(" ");
for(String words : original) {
reversed = words + " " + reversed;
}
return reversed;
}
}
答案 0 :(得分:1)
您正在按索引的升序对数组进行迭代,因此最后一个索引不会排在第一位。
但是,您正在通过将当前String
与中间结果(由上一次迭代创建)串联来创建输出。
例如,第一次迭代会产生以下结果:
"one" + " " + ""
"two" + " " + "one "
"three" +" " + "two one "
...
最后,最后一个元素“七个”附加到“六个五个四个三个两个一个”之后,因此最终所有元素以相反的顺序串联在一起。
答案 1 :(得分:1)
循环迭代如下:
第一次迭代之前
reversed= ""
第一次迭代:words = "one"
和reversed="one "
第二次迭代:words = "two"
和reversed="two one "
第三次迭代:words = "three"
和reversed="three two one "
第四次迭代:words = "four"
和reversed="four three two one "
第五次迭代:words = "five"
和reversed="five four three two one "
第六次迭代:words = "six"
和reversed="six five four three two one "
第7次迭代:words = "seven"
和reversed="seven six five four three two one "