Java 我的程序不会计算元音

Java 我的程序不会计算元音,java,Java,我有一个家庭作业,需要计算字符串中的元音。我的程序正在运行,但不会忽略辅音和空格。代码中有我遗漏的东西吗 static void main(String[] args) { // TODO Auto-generated method stub boolean stopProgram = false; while(!stopProgram == true) { System.out.println("Enter a Word or \"q\" to end

我有一个家庭作业,需要计算字符串中的元音。我的程序正在运行,但不会忽略辅音和空格。代码中有我遗漏的东西吗

static void main(String[] args) {
    // TODO Auto-generated method stub
    boolean stopProgram = false;
    while(!stopProgram == true) {
        System.out.println("Enter a Word or \"q\" to end the program: "); // prompt the user for input
        Scanner wordScanner = new Scanner(System.in);
        String word = wordScanner.nextLine();
        if(!word.equals("q")) {
            String vowels[] = {"a","e","i","o","u","y","A","E","I","O","U","Y"}; //define upper and lower case vowels
            int count = 0;
            for(int i = 0; i < word.length(); i++) {
                if(String.valueOf(word.charAt(i)).equals(vowels[0]) ||
                        String.valueOf(word.charAt(i)).equals(vowels[1]));
                        String.valueOf(word.charAt(i)).equals(vowels[2]);
                        String.valueOf(word.charAt(i)).equals(vowels[3]);
                        String.valueOf(word.charAt(i)).equals(vowels[4]);
                        String.valueOf(word.charAt(i)).equals(vowels[5]);
                        String.valueOf(word.charAt(i)).equals(vowels[6]);
                        String.valueOf(word.charAt(i)).equals(vowels[7]);
                        String.valueOf(word.charAt(i)).equals(vowels[8]);
                        String.valueOf(word.charAt(i)).equals(vowels[9]);
                        String.valueOf(word.charAt(i)).equals(vowels[10]);
String.valueOf(word.charAt(i)).equals(vowels[11]);

                        count++;
                }
            System.out.println(("The Vowel Count is: ") + count);   
            }


    }
}
static void main(字符串[]args){
//TODO自动生成的方法存根
布尔程序=假;
而(!stopProgram==true){
System.out.println(“输入一个单词或\“q\”结束程序:”);//提示用户输入
Scanner wordScanner=新扫描仪(System.in);
String word=wordScanner.nextLine();
如果(!word.equals(“q”)){
字符串元音[]={a”,“e”,“i”,“o”,“u”,“y”,“a”,“e”,“i”,“o”,“u”,“y”};//定义大写和小写元音
整数计数=0;
for(int i=0;i

}

这是您的if声明:

if(String.valueOf(word.charAt(i)).equals(vowels[0]) ||
                    String.valueOf(word.charAt(i)).equals(vowels[1]));
通过
中断if语句在最后

之后,有很多语句(其结果被忽略)

不再是if语句的一部分


然后,每次迭代都会增加计数-不管是否,它都会被所说的
中断

首先,你应该让你的代码更简洁:在while之外创建元音列表,这样你就不会在每次迭代时都创建元音列表,然后使用双for循环来运行元音选项卡:

static void main(String[] args) {
    // TODO Auto-generated method stub
    boolean stopProgram = false;
    String vowels[] = {"a","e","i","o","u","y","A","E","I","O","U","Y"}; //define upper and lower case vowels
    while(!stopProgram == true) {
        System.out.println("Enter a Word or \"q\" to end the program: "); // prompt the user for input
        Scanner wordScanner = new Scanner(System.in);
        String word = wordScanner.nextLine();
        if(!word.equals("q")) {
            int count = 0;
            for(int i = 0; i < word.length(); i++) {
                for(int j = 0; j < 12; ++j){
                    if(String.valueOf(word.charAt(i)).equals(vowels[j]){
                        ++count;
                        break;
                    }
                }
            }
        System.out.println(("The Vowel Count is: ") + count);   
        }
    }
}
static void main(字符串[]args){
//TODO自动生成的方法存根
布尔程序=假;
字符串元音[]={a”,“e”,“i”,“o”,“u”,“y”,“a”,“e”,“i”,“o”,“u”,“y”};//定义大写和小写元音
而(!stopProgram==true){
System.out.println(“输入一个单词或\“q\”结束程序:”);//提示用户输入
Scanner wordScanner=新扫描仪(System.in);
String word=wordScanner.nextLine();
如果(!word.equals(“q”)){
整数计数=0;
for(int i=0;i
您正在用分号
而不是或
|
分隔您的
if
条件。请检查
if
的格式,以确保不同的条件正确分隔,并且条件正确封闭(并且在关闭后没有分号)。此外,您可以使用嵌套的for循环遍历元音数组,使其更具可读性:;虽然感觉像是一个重复,但您的代码本身也存在问题,值得自行解决。双循环不是必需的,使用常量在元音数组上循环也是非常糟糕的形式。我没有说这很糟糕,但是,避免同一函数的11次调用时的代码重复总是比较干净的。通过这样做,它还可以解决@Nathan的问题:)(因为“| |”不再有用了)。不,你误解了我的意思。假设我决定去掉Y作为元音。您认为您的代码会发生什么情况?您是对的,最好使用元音。length()来代替
static void main(String[] args) {
    // TODO Auto-generated method stub
    boolean stopProgram = false;
    String vowels[] = {"a","e","i","o","u","y","A","E","I","O","U","Y"}; //define upper and lower case vowels
    while(!stopProgram == true) {
        System.out.println("Enter a Word or \"q\" to end the program: "); // prompt the user for input
        Scanner wordScanner = new Scanner(System.in);
        String word = wordScanner.nextLine();
        if(!word.equals("q")) {
            int count = 0;
            for(int i = 0; i < word.length(); i++) {
                for(int j = 0; j < 12; ++j){
                    if(String.valueOf(word.charAt(i)).equals(vowels[j]){
                        ++count;
                        break;
                    }
                }
            }
        System.out.println(("The Vowel Count is: ") + count);   
        }
    }
}