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

如何交换字符串中奇偶位置的单词?代码问题求助

交换字符串中相邻的每一对单词

要实现把类似 "Hello World Hello World Hello World" 转换成 "World Hello World Hello World Hello" 的效果,核心是交换数组中每一对相邻的单词(位置0和1、2和3……),下面是正确的实现思路和代码:

步骤说明

  • 先把字符串按空格分割成单词数组,方便操作每个单词
  • 遍历数组,每次处理索引为偶数的位置(0、2、4……),和它后面的奇数索引位置(1、3、5……)的单词交换
  • 最后把交换后的数组重新拼接成字符串

正确代码示例

public class SwapWords {
    public static void main(String[] args) {
        String str = "Hello World Hello World Hello World";
        // 按空格分割成单词数组
        String[] words = str.split(" ");
        
        // 遍历数组,每两个相邻单词交换一次
        for (int i = 0; i < words.length - 1; i += 2) {
            // 交换当前单词和下一个单词
            String temp = words[i];
            words[i] = words[i + 1];
            words[i + 1] = temp;
        }
        
        // 把数组拼接回字符串
        String result = String.join(" ", words);
        System.out.println(result);
        // 输出:World Hello World Hello World Hello
    }
}

对之前错误代码的说明

你之前的代码问题出在:

  • 错误地对字符串使用了取模运算(temp[evenInd] % 2 == 0),字符串不能做整数取模操作,这会直接报错
  • 第二个循环里的逻辑只是覆盖单词(temp[i] = temp[i-1]),没有真正完成交换,而且还可能出现数组越界(比如当i是最后一个索引时,i+1会超出数组长度)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:31:11