How can I check how many consonants and vowels there are in a Java sentence?

At the end of my cycle, I plan to display the number of consonants and vowels in the sentence. I was wondering if there was a more efficient way to check how many consonants and vowels are in a given sentence, rather than using the if statement and manually entering each letter. (the key refers to my scanner that has already been initialized)

Edit: he needs to ignore numbers and other special characters, for example, if I write Hello @, how are you? There must be 8 vowels and 6 consonants.

System.out.println("Please enter the sentence to analyze: ");

String words = key.nextLine(); //the sentence the user inputs
int c = 0; //# of consonants
int v = 0; //# of vowels
int length = words.length(); //length of sentence
int check; //goes over each letter in our sentence

for(check = 0; check < length; check++){
char a = words.charAt(check);   

        if(a == 'a' || a == 'A' || a == 'e' || a == 'E' || a == 'i' || a == 'I' || a == 'o'
            || a == 'O' || a == 'u' || a == 'U' || a == 'y' || a == 'Y')
            v = v + 1;
        else if(a == 'b' || a == 'B' || a == 'c' || a == 'C' || a == 'd' || a == 'D' || a == 'f'
            || a == 'F' || a == 'g' || a == 'G' || a == 'h' || a == 'H' || a == 'j' || a == 'J' 
            || a == 'k' || a == 'K' || a == 'l' || a == 'L' || a == 'm' || a == 'M' || a == 'n' 
            || a == 'N' || a == 'p' || a == 'P' || a == 'q' || a == 'Q' || a == 'r' || a == 'r'
            || a == 's' || a == 'S' || a == 't' || a == 'T' || a == 'v' || a == 'V' || a == 'w'
            || a == 'W' || a == 'x' || a == 'X' || a == 'z' || a == 'Z')
                c = c + 1;
}
+4
source share
10 answers

Character.isLetter(ch), , , , .

:

    Set<Character> vowels = new HashSet<Character>();
    for (char ch : "aeiou".toCharArray()) {
        vowels.add(ch);
    }

v c:

    if (Character.isLetter(a)) {
        if (vowels.contains(Character.toLowerCase(a))) {
            v++;
        } else {
            c++;
        }
    }
+4

, ( , , - ), , :

static final char[] vowels = { 'a', 'A', 'e', 'E', 'i', 'I', 'o', 'O', 'u', 'U', 'y', 'Y' };

public static boolean isVowel(char c) {
    for (char vowel : vowels) {
        if (c == vowel) {
            return true;
        }
    }
    return false;
}

public static boolean isConsonant(char c) {
    return !isVowel(c);
}

, Y Y , , . Y (AFAIK).

, char , Character#isLetter.

, :

for(check = 0; check < length; check++){
    char a = words.charAt(check);
    if (Character.isLetter(a)) {
        if (isVowel(a)) {
            v++;
        } else {
            c++;
        }
    }
}
+2

, , . , , char char , .

String myText = " .";

    int v = 0;

    char[] vowels = {'a','e','i','o','u'};
    char[] sentence = myText.replaceAll("[^a-zA-Z]","").toLowerCase().toCharArray();

    for (char letter : sentence) {
        for (char vowel : vowels) {
            if (letter == vowel) {
                v++;
            }
        }
    }
    System.out.println("Vowels:"+ v);
    System.out.println("Consonants:" + (sentence.length -v));
+2

-

String vowels = "aeiouyAEIOUY"; // you can declare it somewhere before loop to 
                                // to avoid redeclaring it each time in loop

//inside loop
if ((a>='a' && a<='z') || (a>='A' && a<='Z')){ //is letter
    if (vowels.indexOf(a)!=-1)                 //is vowel
        v++;
    else                                       //is consonant
        c++;
}
+1

, , , , :

if( ( a >= 'a' && a<= 'z' ) || ( a >= 'A' && a <= 'Z' ) )
{
    // is letter
    switch( a )
    {
        case 'a': case 'A':
        case 'e': case 'E':
        case 'i': case 'I':
        case 'o': case 'O':
        case 'U': case 'u':
             ++v;
             break;
        default: // don't list the rest of the characters since we did the check in the if statement above.
             ++c;
    }
}
+1

2 :

  • (a, e, i, o, u)

Java.

. :

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Counter {
    public static void main(String[] args) {
        String test = "the fox is in the woods";
                    test = test.toLowerCase();
        List<Character> vowels = new ArrayList<Character>();
        vowels.addAll(Arrays.asList(new Character[]{'a', 'e', 'i', 'o', 'u'}));
        List<Character> consonants = new ArrayList<Character>();
        consonants.addAll(Arrays.asList(new Character[]{'b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'}));
        int vcount = 0;
        int ccount = 0;
        for (int i = 0; i < test.length(); i++){
            Character letter = test.charAt(i);
            if (vowels.contains(letter)){
                vcount ++;
            } else if (consonants.contains(letter)){
                ccount++;
            }
        }

        System.out.println(vcount);
        System.out.println(ccount);
    }
}
+1

, , . , "" .

, , , :

package misc;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * ParseUtils get counts of vowels and consonants in sentence
 * @author Michael
 * @link https://stackoverflow.com/questions/24048907/how-can-i-check-how-many-consonants-and-vowels-there-are-in-a-sentence-in-java
 * @since 6/4/2014 6:57 PM
 */
public class ParseUtils {

    private static final String VOWEL_PATTERN_STR = "(?i)[aeiou]";
    private static final Pattern VOWEL_PATTERN = Pattern.compile(VOWEL_PATTERN_STR);
    private static final String CONSONANT_PATTERN_STR = "(?i)[b-df-hj-np-tv-z]";
    private static final Pattern CONSONANT_PATTERN = Pattern.compile(CONSONANT_PATTERN_STR);

    private ParseUtils() {}

    public static void main(String[] args) {
        for (String arg : args) {
            System.out.println(String.format("sentence: '%s' # letters: %d # vowels: %d # consonants %d", arg, arg.length(), getNumVowels(arg), getNumConsonants(arg)));
        }
    }

    public static int getNumVowels(String sentence) {
        return getMatchCount(sentence, VOWEL_PATTERN);
    }

    public static int getNumConsonants(String sentence) {
        return getMatchCount(sentence, CONSONANT_PATTERN);
    }

    private static int getMatchCount(String s, Pattern p) {
        int numMatches = 0;
        if ((p != null) && (s != null) && (s.trim().length() > 0)) {
            Matcher m = p.matcher(s);
            while (m.find()) {
                ++numMatches;
            }
        }
        return numMatches;
    }

}
+1

. = - .

:

System.out.println("Please enter the sentence to analyze: ");
int v = 0;
int c = 0;
String string = key.nextLine(); //the sentence the user inputs
String[] stringArray = string.split(" ");
for(int i=0;i<stringArray.length;i++)
  {
     for(int j= 0; j<string.length(); j++)
      {
      char a = string.charAt(j);   

    if(a == 'a' || a == 'A' || a == 'e' || a == 'E' || a == 'i' || a == 'I' || a == 'o'
        || a == 'O' || a == 'u' || a == 'U' || a == 'y' || a == 'Y')
        v = v + 1;
      }
        c= c+(stringArray.length)-v;
  }

System.out.println("Vowels:"+v+"  and Consonants:"+c);
0

- -, :

public class CountChars {
    public static final String CONSONANTS = "[BCDFGHJKLMNPQRSTVWXYZ]";
    public static final String VOWELS = "[AEIOU]"; // considering Y a consonant here
    public static final String NOT_LETTERS = "[\\W_0-9]";

    public static void main(String[] args) {
        String words = "How can I check how many consonants and vowels there are in a sentence in Java?";

        String letters = words.toUpperCase().replaceAll(NOT_LETTERS, "");
        System.out.println("Letters: " + letters.length());

        String vowels = letters.replaceAll(CONSONANTS, "");
        System.out.println("Vowels: " + vowels.length());

        String consonants = letters.replaceAll(VOWELS, "");
        System.out.println("Consonants: " + consonants.length());
    }
}
0

:

public static void checkVowelsAndConsonants(String s){
    System.out.println("Vowel Count: " + (s.length() - s.toLowerCase().replaceAll("a|e|i|o|u|", "").length()));
    //Also eliminating spaces, if any for the consonant count
    System.out.println("Consonant Count: " + (s.toLowerCase().replaceAll("a|e|i|o| |u", "").length()));
}
0

Source: https://habr.com/ru/post/1543309/


All Articles