java foreach循环是如何工作的?
在下面的代码中,我试图以相反的方式打印句子。它对我有用
我不明白为什么它先打印“七”而不是“一”
根据我在下面的知识,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;
}
}
# 1 楼答案
您正在按索引的递增顺序迭代数组,因此最后一个索引不会排在第一位
但是,您是通过将当前
String
连接到中间结果(由上一次迭代创建)来创建输出的例如,第一次迭代会产生以下结果:
最后,最后一个元素“七”被附加到“六五四三二一”之后,因此所有元素都以相反的顺序连接在一起
# 2 楼答案
循环迭代如下所示:
在第一次迭代之前
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 "
第七次迭代:
words = "seven"
和reversed="seven six five four three two one "