gpt4 book ai didi

java - 所以我需要找到字符串中的所有元音并使用循环替换它们

转载 作者:行者123 更新时间:2023-12-02 03:15:38 26 4
gpt4 key购买 nike

所以我有这个,并且要注意我只使用简单的方法,例如 toString()、charAt。现在我的代码只是返回原始字符串,我不知道为什么。

好吧,经过几次测试,我意识到它返回原始字符串的原因是因为在循环中嵌套的 if 语句中,条件永远不会为 true,因此它绕过了 if 语句。为什么它从来都不是真的?

        System.out.print("Enter in a string: ");

String userInput = scan.nextLine();//string user enters

String vowelChar;//individual character within user's input

for (int i=0; i<userInput.length(); i++){

Character indChar = userInput.charAt(i);

vowelChar = indChar.toString();

if (vowelChar=="a" || vowelChar=="e" || vowelChar=="i" || vowelChar=="o" || vowelChar=="u"){
String beforeText = userInput.substring(0, i-1);//string before vowel
String afterText = userInput.substring(i+1);//string after vowel
userInput=beforeText+"_"+afterText;
}else{
//character is not a vowel
//do nothing
}
}
System.out.print(userInput);
}
}

最佳答案

需要考虑的一些事项:

  1. 比较字符串时不要使用“==”,如:Why doesn’t == work on String? 中所述。您可以使用“==”比较字符,因此不需要将其转换为字符串进行比较。

  2. for 循环中的索引从 0 开始,因此这条语句:

    String beforeText = userInput.substring(0, i-1)

    如果第一个索引处有元音,将抛出 java.lang.StringIndexOutOfBoundsException。

  3. 如果您没有在其中执行任何操作,则不需要“else”情况。

虽然这不是我实现您想要的循环类型的方式,但这里有一个解决方案,可以对原始代码进行最少的更改:

        System.out.print("Enter in a string: ");

String userInput = scan.nextLine();//string user enters

for (int i = 0; i < userInput.length(); i++) {

Character indChar = userInput.charAt(i);

if (indChar == 'a' || indChar == 'e' || indChar == 'i' || indChar == 'o' || indChar == 'u' ||
indChar == 'A' || indChar == 'E' || indChar == 'I' || indChar == 'O' || indChar == 'U') {
String beforeText = userInput.substring(0, i); //string before vowel
String afterText = userInput.substring(i + 1); //string after vowel
userInput = beforeText + "_" + afterText;
}
}
System.out.print(userInput);

关于java - 所以我需要找到字符串中的所有元音并使用循环替换它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40351798/

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