Java字符串元音插入逻辑错误:代码输出与预期不符排查
问题分析与修正
你的代码核心逻辑错误在于判断前一个字符是否为元音的条件表达式,由此导致了多余的"av"插入。
错误点详解
循环中的条件判断存在逻辑漏洞:
(c2 != 'a' || c2 != 'e' || c2 != 'i' || c2 != 'o' || c2 != 'u')
这个表达式永远为true——任何字符不可能同时等于所有元音,比如当c2是a时,c2 != 'e'为true,整个或运算结果就为true。这导致只要当前字符是元音,不管前一个字符是不是元音,都会插入"av",最终出现多余的"av"(比如输入末尾的o前被错误插入了"av")。
修正后的代码
将判断前一个字符非元音的条件中的||全部替换为&&,确保只有当前一个字符确实不是任何元音时,才插入"av":
public class Main { public static void main(String[] args) { String st = "aadeleo"; String word = ""; int l = st.length(); char c, c2; for (int i = l - 1; i > 0; i--) { c = st.charAt(i); c2 = st.charAt(i - 1); // 修正:将||改为&&,确保前一个字符不是任何元音 if ((c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') && (c2 != 'a' && c2 != 'e' && c2 != 'i' && c2 != 'o' && c2 != 'u')) { word = "av" + c + word; } else word = c + word; } c = st.charAt(0); if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') word = "av" + c + word; else word = c + word; System.out.println(word); } }
验证结果
输入aadeleo,修正后的代码输出为avaadavelaveo,与预期一致。
内容的提问来源于stack exchange,提问作者Nirjhar Mitra
相关产品推荐
相关产品推荐

