此程序应检查您为元音输入的字符串,然后输出元音量。但是,当我运行程序时,计数器显示0. Eclipse没有显示错误。
我希望如果我输入hello
,那么它会显示2
,但它始终会显示0
。
import javax.swing.*;
public class Lab5 {
public static boolean isVowel(char x) {
if (x == 'A' || x == 'E' || x == 'I' || x == 'O' || x == 'U') {
return true;
}
else {
return false;
}
}
public static void main(String[] args) {
String seq;
boolean vowel;
int counter = 0;
seq = JOptionPane.showInputDialog(null, "Please enter a sequence of characters: ");
seq.toUpperCase();
for (int i=0; i<seq.length(); i++) {
vowel = isVowel(seq.charAt(i));
if (vowel == true) {
counter++;
}
}
JOptionPane.showMessageDialog(null, "The number of vowels in your sequence of characters is : " + counter);
}
}
答案 0 :(得分:5)
这是因为seq.toUpperCase()
没有按照您的想法行事。它返回String
的副本,转换为大写,但它不会改变原始版本。 (String
在Java中是不可变的,因此它无法改变它。)
尝试将该行更改为
seq = seq.toUpperCase();
答案 1 :(得分:3)
字符串在Java中是不可变的,因此您无法在适当的位置修改它们。当您在字符串上调用toUpperCase()
时,它将返回该字符串的副本,其中所有字符都更改为大写等效字符,但原始字符串保持不变。
这意味着您必须再次将toUpperCase
的调用结果分配给您的变量。所以,而不是
seq.toUpperCase();
待办事项
seq = seq.toUpperCase();