You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java字符串单词反转代码中for循环end变量取值疑问

关于Java字符串单词反转代码中for循环变量的疑问

代码实现

import java.util.*;

public class stringProblems {

    static void reverse(char str[], int start, int end){
        char temp;
        while(start <= end){
            temp = str[start];
            str[start] = str[end];
            str[end] = temp;
            start++;
            end--;
        }
    }
    
    static char[] reverseWords(char[] s){
        int start = 0;
        for(int end = 0; end < s.length; end++){
            if(s[end] == ' '){
                reverse(s, start, end);
                start = end + 1;
            }
        }
        reverse(s, start, s.length -1);
        reverse(s, 0, s.length-1);
        return s;
    }

    public static void main(String[] args) {
        System.out.println("enter the string to be reversed");
        Scanner ss = new Scanner(System.in);
        String s = ss.nextLine();
        char[] p = reverseWords(s.toCharArray());
        System.out.println(p);
    }
}

问题解答

回到for循环时,end的取值是2,原因如下:

Java的for循环遵循固定执行流程:

  1. 初始化变量:int end = 0
  2. 判断循环条件:end < s.length,成立则进入循环体
  3. 执行循环体内部代码(包括触发if条件时的reverse调用和start赋值)
  4. 执行循环变量的递增操作:end++
  5. 回到步骤2,重新判断条件

针对输入"I like ice cream!"的场景:

  • 当end=1时,触发if条件,执行完reverse方法和start = end +1后,循环体执行完毕
  • 紧接着执行end++,此时end的值从1变为2
  • 之后回到循环条件判断,继续后续的遍历流程

内容的提问来源于stack exchange,提问作者sriram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 12:57:02