简体   繁体   中英

Can't figure out why int is duplicating in Java

I am creatings a simple Java program that in the main class asks for a string (input) and then prints out how many vowels (int count) and consonants are in the string. The number of vowels works perfectly however the number of consonants double, so the string "James" has 2 vowels and 6 consonants according to my program.

public class counter {

vowels p1 = new vowels();

public int con = 0;

public int count() {

    String input = p1.getInput();

    int i = 0;
    int count = 0;

    while (i < input.length()){

        if (input.charAt(i) == 'a' || input.charAt(i) == 'e' || input.charAt(i) == 'i' || input.charAt(i) == 'o' || input.charAt(i) == 'u') {

        count++;

        } else if (input.charAt(i) != ' ') {
            con++;
        }
    i++;
    }

    return count;

}

public int con() {
    return con;
}
}

您正在使用实例成员con来计数辅音,并且没有在count方法的开头对其进行初始化,因此多次调用该方法将导致无效计数。

seems like you are using int con=0;

is used for consonant count so instead of using

else if (input.charAt(i) != ' ') {
        con++;
    }

simply use else { con++; } else { con++; }

Alternate : subtract the vowel count from string length 'com = P1.length()-count;'

Try to set the variable con to zero at the begining of the method "count".

con = 0;

I hope it works.

char ch;
for(int i = 0; i < str.length(); i ++)
        {
            ch = str.charAt(i);

            if(ch == 'a' || ch == 'A' || ch == 'e' || ch == 'E' || ch == 'i' || 
            ch == 'I' || ch == 'o' || ch == 'O' || ch == 'u' || ch == 'U')
                count ++;
            else 
                con;
       }

you had nod consider the case when vowels are in caps I solved this in my code

hope my code helps you in this regard thanks.Happy coding

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM