【发布时间】:2013-11-15 21:29:38
【问题描述】:
这是我编写的用于计算字符串数组中元音数量的代码:
int vowels = 0;
for (int x = 0; x < arrayInput.length; x++) {
for (int a = 0; a < arrayInput[x].length(); a++){
switch (arrayInput[x].charAt(a)){
case 'A': vowels++;
case 'a': vowels++;
case 'E': vowels++;
case 'e': vowels++;
case 'I': vowels++;
case 'i': vowels++;
case 'O': vowels++;
case 'o': vowels++;
case 'U': vowels++;
case 'u': vowels++;
case 'Y': vowels++;
case 'y': vowels++;
}
}
}
但是,元音总是返回 0。为什么?
发现问题了! 程序前面的这段代码:
String[] vowelArray = arrayInput;
for (int x = 0; x < vowelArray.length; x++) {
vowelArray[x] = vowelArray[x].replaceAll("[AEIOUYaeiouy]", "_");
}
for (int x = 0; x < vowelArray.length; x++) {
System.out.print(vowelArray[x] + " ");
}
正在改变 `arrayInput' 的值 有谁知道为什么?
【问题讨论】:
-
您需要在每个案例之后使用
break。 docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html -
请显示您的
String数组的内容。 -
我昨天发布了this answer。你应该检查一下。
-
你应该打印
arrayInput[x]的包含以确保它不为空。 -
你是什么意思 - “正在改变 `arrayInput' 的值有人知道为什么吗?” ?? OP 也代表 Original Poster。