有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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;
    }

}

共 (2) 个答案

  1. # 1 楼答案

    您正在按索引的递增顺序迭代数组,因此最后一个索引不会排在第一位

    但是,您是通过将当前String连接到中间结果(由上一次迭代创建)来创建输出的

    例如,第一次迭代会产生以下结果:

    "one" + " " + ""
    "two" + " " + "one "
    "three" +" " + "two one "
    ...
    

    最后,最后一个元素“七”被附加到“六五四三二一”之后,因此所有元素都以相反的顺序连接在一起

  2. # 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 "