【发布时间】:2016-09-26 23:03:49
【问题描述】:
我正在尝试编写一个简单的程序来计算用户输入的字符串中元音、辅音和空格的数量。我的 do while 循环和 if 语句有问题。它将所有内容都视为一个空格,而不是元音或辅音。如果你们有任何建议,请告诉我! :)
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import javax.swing.JOptionPane;
public class VowelCounter {
private static final Set<String>
vowels = new HashSet<>
(Arrays.asList("a","e","i","o","u","y"));
private static final Set<String>
cons = new HashSet<>
(Arrays.asList("b","c","d","f","g","h","j","k","l","m","n","p","q","r","s","t","v","w","x","z"));
public static void main(String[] args) {
// ---------------------------------------------- VARIABLE DECLARATIONS
int vnum = 0;
int snum = 0;
int cnum = 0;
int i = 0;
// -------------------------------------------------------------- INPUT
String input = JOptionPane.showInputDialog
("Enter name (like your university)");
// --------------------------------------------------------- PROCESSING
char result = input.charAt(i);
do{
if (vowels.contains(result))
vnum++;
if (cons.contains(result))
cnum++;
if (!input.matches(("[a-zA-Z]+")))
snum++;
i++;
}while (i < input.length());
System.out.println("There are " + vnum + " vowels, " + cnum + " consonants, and " + snum + "spaces");
【问题讨论】:
-
我不太熟悉,但你的
regex一定是错的。为什么不直接说if (input.equals(" ")) -
你只使用字符串的第一个字符:在循环内移动
char result = input.charAt(i);。 -
您对“非字母”的测试是错误的:它适用于整个输入,因为它是
+,它会尽可能多地吃掉。
标签: java