如何交换字符串中奇偶位置的单词?代码问题求助
交换字符串中相邻的每一对单词
要实现把类似 "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
相关产品推荐
相关产品推荐

