gpt4 book ai didi

java - 小程序输出错误。为什么这个字符串变量没有按照我想要的方式执行?

转载 作者:行者123 更新时间:2023-12-02 10:18:22 24 4
gpt4 key购买 nike

这个程序应该接受一个字符串,检查每个字母是否是元音并将元音更改为下划线。例如,如果我输入 some 它应该输出 s_m_。这是一个简单的编程练习,我觉得我应该能够做到。然而我真的很困惑,不知道我做错了什么。

我已经声明了一个数组来保存元音,一个 newStr 变量将包含更新的字符串,并且我正在循环该字符串,使用 charAt() 检查它是否在 vowels 数组中。如果是,我将 _ 添加到更新后的字符串中,如果不是,则保留原始字母。最后的输出是错误的,我做错了什么?

char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
String newStr = "";

for (int x = 0; x < str.length(); x++) {
char letter = str.charAt(x);

for (int j = 0; j < vowels.length; j++) {
if (letter == vowels[j]) {
newStr = newStr + '_';
break;
} else {
newStr = newStr + letter;
break;
}
}
}

out.println(newStr);

最佳答案

在您的代码中,问题出在嵌套的“for 循环”内。我用引号括起来是因为它实际上从未循环。第一次迭代 j=0 立即中断循环,因为您的字母等于 a(letter == Voels[0]) 或不是。无论哪种情况,您都需要执行 break; 并附加该字符。这意味着您的循环可以简化为一个简单的 if-else,它检查字母是否为 a 并将其替换为 _ 或保留它.

要解决此问题,您需要使用不同的方法。您可以创建一个元音字符串,例如“aeiouAEIOU”并使用 indexOf测试所选字符是否为元音。

public static String omitVowels(String input) {
StringBuilder out = new StringBuilder(input.length());
String vowels = "aeiouAEIOU";
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (vowels.indexOf(c) >= 0) // is vowel if index not negative
out.append('_');
else
out.append(c);
}
return out.toString();
}
如果提供的字符不是字符串的一部分,

indexOf(char) 将返回 -1,否则将返回特定索引。我们可以利用这个属性来测试该字符是否是元音。

示例

omitVowels("hello world") -> "h_ll_ w_rld"

omitVowels("aeiou") -> "_____"

omitVowels("TESTing") -> "T_ST_ng"

关于java - 小程序输出错误。为什么这个字符串变量没有按照我想要的方式执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54519811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com