替换Switch语句中的Char

Mod*_*You 1 java switch-statement

以下是用下划线替换单词元音的代码:

String[] vowelArray = arrayInput;
    for (int x = 0; x < vowelArray.length; x++){
        for (int a = 0; a < vowelArray[x].length(); a++){
            switch (vowelArray[x].charAt(x)){
                case 'A': vowelArray[x].charAt(x) = "_";
                case 'a': vowelArray[x].charAt(x) = "_";
                case 'E': vowelArray[x].charAt(x) = "_";
                case 'e': vowelArray[x].charAt(x) = "_";
                case 'I': vowelArray[x].charAt(x) = "_";
                case 'i': vowelArray[x].charAt(x) = "_";
                case 'O': vowelArray[x].charAt(x) = "_";
                case 'o': vowelArray[x].charAt(x) = "_";
                case 'U': vowelArray[x].charAt(x) = "_";
                case 'u': vowelArray[x].charAt(x) = "_";
                case 'Y': vowelArray[x].charAt(x) = "_";
                case 'y': vowelArray[x].charAt(x) = "_";
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是在编译时,我收到此错误:

线程"main"中的异常java.lang.Error:未解决的编译问题:赋值的左侧必须是变量

它出现在每个case的switch语句中.我究竟做错了什么?

Ósc*_*pez 6

你无法String在Java中更改它,它是一个不可变的对象.你可以做的是从底层char[]获取String,修改数组,并String用它创建一个新的(并且不要忘记case用a 结束每个语句break):

String[] vowelArray = arrayInput;
for (int x = 0; x < vowelArray.length; x++) {
    char[] chars = vowelArray[x].toCharArray();
    for (int a = 0; a < chars.length; a++) {
        switch (chars[a]) {
            case 'A': chars[a] = "_"; break;
            case 'a': chars[a] = "_"; break;
            case 'E': chars[a] = "_"; break;
            case 'e': chars[a] = "_"; break;
            case 'I': chars[a] = "_"; break;
            case 'i': chars[a] = "_"; break;
            case 'O': chars[a] = "_"; break;
            case 'o': chars[a] = "_"; break;
            case 'U': chars[a] = "_"; break;
            case 'u': chars[a] = "_"; break;
            case 'Y': chars[a] = "_"; break;
            case 'y': chars[a] = "_"; break;
        }
    }
    vowelArray[x] = new String(chars);
}
Run Code Online (Sandbox Code Playgroud)

或者甚至更简单,您可以使用该replaceAll()方法执行替换:

String[] vowelArray = arrayInput;
for (int x = 0; x < vowelArray.length; x++) {
    vowelArray[x] = vowelArray[x].replaceAll("[AaEeIiOoUuYy]", "_");
}
Run Code Online (Sandbox Code Playgroud)