我制作了这个简单的GUI程序,用于计算特定字符序列的元音和辅音。计数器还可以,但是我遇到了if-else语句的问题,当该字符既不是元音也不是辅音时我必须显示一条消息......这是代码:
//I initialized these variables:
public static int vowels = 0, consonants = 0, charac = 0;
public static String outputStr;
public static String conso = "bcdfghjklmnpqrstvwxyz";
public static String vow = "aeiou";
//Here's the code for my "count" button
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String userInput = jTextField1.getText();
userInput = userInput.toUpperCase();
conso = conso.toUpperCase();
vow = vow.toUpperCase();
String wordInput[] = userInput.split("");
vowels = 0;
consonants = 0;
charac = 0;
for(int i=0; i<wordInput.length; i++) {
for(int j=0; j<5; j++) {
char v = vow.charAt(j);
String VL = Character.toString(v);
if(VL.equals(wordInput[i])) {
vowels ++;
charac = 0;}
else {
charac += 1; }
}
for(int h=0; h<21; h++) {
char c = conso.charAt(h);
String CL = Character.toString(c);
if(CL.equals(wordInput[i])) {
consonants ++;
charac = 0; }
else {
charac += 1; }
}
}
String totalVow = Integer.toString(vowels);
String totalCons = Integer.toString(consonants);
jLabel5.setText(totalVow);
jLabel6.setText(totalCons);
//here's the if-else statement:
if (charac == 0) {
jLabel7.setText(" ");
}
else if (charac >= 1) {
jLabel7.setText("The sequence contains invalid characters.");
}
if (userInput.isEmpty()) {
jLabel7.setText("No input.");
}
}
这是它的样子:
我输入了一个没有任何特殊字符或数字的字符“序列”。但它仍然显示消息,其中除了元音和辅音之外还有其他字符。 if-else语句有问题吗?谢谢你的帮助:)
答案 0 :(得分:4)
问题出在内部for循环中。每个角色都使用5个不同的元音进行测试,因此肯定无法匹配其中至少4个,charac
将会增加
for(int j=0; j<5; j++) {
char v = vow.charAt(j);
String VL = Character.toString(v);
if(VL.equals(wordInput[i])) {
vowels ++;
charac = 0;}
else {
charac += 1;
}
}
相反,您可以使用String.contains()方法代替内部循环。
答案 1 :(得分:3)
您在循环中放入了不相关的代码。你的循环应该是:
for(int i=0; i<wordInput.length; i++) {
char ch=wordInput.charAt(i);
if(Character.isLetter(ch)){
if(isVowel(ch)){// make a method which return true if char is vowel.
vowel++;
}
else{
consonent++;
}
}
}
答案 2 :(得分:2)
你在两个循环中添加charac
:一个查找辅音,一个查找元音。你想在这里使用if / else-if / else,只有当一个字符不是你添加到charac
的辅音或元音时才会使用。
另外,看看番石榴实用程序。例如,这就是你得到所有元音和所有辅音的方法:
String vowels = "aeiou";
String consonants = "bcdfghjklmnpqrstvwxz";
String input = "mary had a little lamb";
String allVowels = CharMatcher.anyOf(vowels).retainFrom(input);
String allConsonants = CharMatcher.anyOf(consonants).retainFrom(input);
答案 3 :(得分:2)
如果错误,则计算无效字符的逻辑。你所做的是:每当角色不是你刚刚测试的角色时,你就增加计数器,也就是说,对于输入中的每个角色,charac
变量增加 25 次!但是,下次角色与当前测试的元音或辅音匹配时,您将<{em}}变量重置为0!
您可以使用内置字符串方法检查当前字符是元音或辅音之一,而不是使用两个charac
循环来检查每个元音和辅音,例如{{1} }。通过这种方式,每个检查都减少为单个if语句,这使得当它既不是元音也不是辅音时更容易产生“else”情况。
for
另请注意,您可以使用indexOf
方法,而不是将字符串拆分为字符串数组。