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

Java如何实现字符串元音字母加倍,现有代码报错该怎么解决?

报错原因分析

  • Java中String是不可变类,charAt(int index)方法仅支持读取指定索引位置的字符,不能作为左值被赋值,你编写的str.charAt(i+1) = str.charAt(i)语法本身不合法,这是触发unexpected type错误的直接原因。
  • 即使你改用可变的StringBuilder操作字符序列,直接修改原序列的索引也会导致遍历长度错乱,且当i走到字符串最后一位时,i+1会触发数组越界异常。

可行实现方式

方案1:遍历拼接实现(逻辑直观兼容性好)

不需要修改原字符串,直接遍历每个字符,判定为元音时往结果中追加两次当前字符,否则追加一次即可,使用StringBuilder做拼接比直接用+拼接字符串效率更高:

public static String doubleVowel(String str) {
    StringBuilder display = new StringBuilder();
    for (int i = 0; i < str.length(); i++) {
        char current = str.charAt(i);
        display.append(current);
        // 判断当前字符是否为小写元音
        if (current == 'a' || current == 'e' || current == 'i' || current == 'o' || current == 'u') {
            display.append(current);
        }
    }
    return display.toString();
}

该实现完全符合要求:输入water输出waateer,输入phone输出phoonee。如果需要支持大写元音,只需要在判断条件中补充大写字母的判定即可。

方案2:正则替换实现(代码简洁)

通过正则表达式匹配所有元音字符,直接替换为两次相同字符即可:

public static String doubleVowel(String str) {
    // 小写元音匹配规则,如需兼容大写可修改为 "([aeiouAEIOU])"
    return str.replaceAll("([aeiou])", "$1$1");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:06:11