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语句中.我究竟做错了什么?
你无法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)
| 归档时间: |
|
| 查看次数: |
1117 次 |
| 最近记录: |