Java 所以我需要找到字符串中的所有元音,并使用循环替换它们
所以我有这个,并且知道我只使用简单的方法,比如toString(),charAt。现在我的代码只是返回原始字符串,我不知道为什么 好的,所以我意识到在一些测试之后,它返回原始字符串的原因是因为在循环中的嵌套if语句中,条件永远不会为true,所以它绕过if语句。为什么从来都不是真的Java 所以我需要找到字符串中的所有元音,并使用循环替换它们,java,loops,Java,Loops,所以我有这个,并且知道我只使用简单的方法,比如toString(),charAt。现在我的代码只是返回原始字符串,我不知道为什么 好的,所以我意识到在一些测试之后,它返回原始字符串的原因是因为在循环中的嵌套if语句中,条件永远不会为true,所以它绕过if语句。为什么从来都不是真的 System.out.print("Enter in a string: "); String userInput = scan.nextLine();//string user e
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);
}
}
System.out.print(“输入字符串:”);
字符串userInput=scan.nextLine()//字符串用户输入
字符串元音//用户输入中的单个字符
对于(int i=0;i
所以使用equals而不是==
因此,使用equals而不是==需要考虑以下几点:
比较字符串时不要使用“==”,如中所述:
您可以将字符与“==”进行比较,因此不需要将其转换为字符串进行比较
for循环中的索引从0开始,因此以下语句:
String beforeText=userInput.substring(0,i-1)
如果第一个索引中有元音,将抛出java.lang.StringIndexOutOfBoundsException
如果你没有在里面做任何事情,你就不需要“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);
System.out.print(“输入字符串:”);
String userInput=scan.nextLine();//字符串用户输入
对于(int i=0;i
需要考虑的几件事:
比较字符串时不要使用“==”,如中所述:
您可以将字符与“==”进行比较,因此不需要将其转换为字符串进行比较
for循环中的索引从0开始,因此以下语句:
String beforeText=userInput.substring(0,i-1)
如果第一个索引中有元音,将抛出java.lang.StringIndexOutOfBoundsException
如果你没有在里面做任何事情,你就不需要“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);
System.out.print(“输入字符串:”);
String userInput=scan.nextLine();//字符串用户输入
对于(int i=0;i
不要转换回字符串并与=
进行比较(因为我们通过Object#equals
比较字符串的值),而是使用if/switch使用char
类型进行比较。此外,您应该在单个大小写中进行比较,以免a
和a
不匹配
char c = Character.toLowerCase(userInput.charAt(i)); //make the character lowercase
switch (c) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
//replace vowel
break;
}
不要转换回字符串并与=
进行比较(因为我们通过Object#equals
比较字符串的值),而是使用if/switch使用char
类型进行比较。此外,您应该在单个大小写中进行比较,以免a
与a
不匹配
char c = Character.toLowerCase(userInput.charAt(i)); //make the character lowercase
switch (c) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
//replace vowel
break;
}
无需转换为字符串
。直接比较字符
Character indChar = userInput.charAt(i);
if ((vowelChar == 'a' || vowelChar == 'e' || vowelChar == 'i' || vowelChar=='o' || vowelChar=='u') {
// ...
}
请注意,字符是单引号而不是双引号无需转换为字符串
。直接比较字符
Character indChar = userInput.charAt(i);
if ((vowelChar == 'a' || vowelChar == 'e' || vowelChar == 'i' || vowelChar=='o' || vowelChar=='u') {
// ...
}
注意单引号中的字符,而不是双引号
if (vowelChar.equals("a") || vowelChar.equals("e") || vowelChar.equals("i") || vowelChar.equals("o") || vowelChar.equals("u")){
或
像这样更改代码
if (vowelChar.equals("a") || vowelChar.equals("e") || vowelChar.equals("i") || vowelChar.equals("o") || vowelChar.equals("u")){
或
不,只是将字符作为字符进行比较,而不是将其转换为字符串。@Robert Agree,我只是指出他使用==比较字符串所犯的错误。不,只是将字符作为字符进行比较,而不是将其转换为字符串。@Robert Agree,我只是指出他使用==比较字符串所犯的错误,这是一个错误陆上通信线。