我想制作一个String大写的元音。这是它的方法:
public static String LetterChanges(String str) {
char[] strChar = str.toCharArray();
for (int i =0; i < str.length(); i++){
char ch = str.charAt(i);
if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u'){
Character.toUpperCase(ch);
str.replace(strChar[i], ch);
}
}
return str;
}
“if”语句会拾取元音,但我无法弄清楚如何将其设为大写。 IntelliJ表示.toUpperCase和.replace的结果都被忽略了。有人可以解释一下为什么忽略这些方法,也许还可以用这个代码指出我正确的方向吗?
答案 0 :(得分:2)
IntelliJ表示忽略这些操作的结果,因为字符串和字符在Java中是不可变的。对它们执行的任何操作的结果需要分配回变量,例如:
ch = Character.toUpperCase(ch);
str = str.replace(strChar[i], ch);
对于实际的程序,它足以循环元音数组,并对每个元音使用String.replace(char old, char new)
。该操作将替换字符串中所有出现的元音:
String string = "Whatever string";
char[] vowels = new char[]{'a', 'e', 'i', 'o', 'u'};
for (char vowel : vowels) {
string = string.replace(vowel, Character.toUpperCase(vowel));
}
System.out.println(string); // WhAtEvEr strIng
答案 1 :(得分:-1)
您的代码不会更新作为输入的原始字符串。 替换方法会修改字符串并返回一个您未分配回输入的字符串。还有 Character.toUppercase(); method返回你必须替换的字符。
public static void main(String[] args) {
String str = "This is my input string";
char[] strChar = str.toCharArray();
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
str = str.replace(strChar[i], Character.toUpperCase(ch));
}
}
System.out.println(str);
}
更简单的方法。
public static void main(String[] args) {
String input = "This is my input string";
System.out.println(input.replace("a", "A").replace("e", "E").replace("i", "I").replace("o", "O").replace("u", "U"));
}