Java: 参数的左侧必须是变量 charAt 错误

Java: Left-hand side of an argument must be a variable charAt error

我正在使用 for 循环将字符串中的所有元音替换为字符。

public String replaceVowel(String text, char letter)
{
    char ch;
    for(int i = 0; i<text.length(); i++)
    {
        ch = text.charAt(i);
        if(ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' || ch == 'y')
        {
            ch = letter;
        }   
        text.charAt(i) = ch;
    }
    return text;
}

代码因在线错误而跳闸:

text.charAt(i) = ch;

在这一行中,我试图在字符串的循环位置初始化 char。但是该行产生错误:

The left-hand side of an assignment must be a variable

感谢任何帮助!

charAt(index) returns 该索引中的字符。不能用于赋值。

像这样的东西会起作用:

char ch;
        String text = "hailey";
        char letter = 't';
        char[] textAsChar = text.toCharArray();
        for(int i = 0; i<text.length(); i++)
        {
            ch = text.charAt(i);
            if(ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' || ch == 'y')
            {
                ch = letter;
            }   
            textAsChar[i] = ch;
        }
        System.out.println(String.valueOf(textAsChar));

与 C++ 不同,Java 方法调用从不 return 变量 "reference"(如 C++ 参考),因此您永远不能分配方法调用结果。

此外 Java 字符串是不可变的,这意味着您不能在不创建新字符串的情况下更改字符串中的单个字符。请参阅有关此主题的 post Replace a character at a specific index in a string?