Kotlin Program to Count the Number of Vowels and Consonants in a Sentence

Example 1: Program to count vowels, consonants, digits and spaces

fun main(args: Array<String>) {
    var line = "This website is aw3som3."
    var vowels = 0
    var consonants = 0
    var digits = 0
    var spaces = 0

    line = line.toLowerCase()
    for (i in 0..line.length - 1) {
        val ch = line[i]
        if (ch == 'a' || ch == 'e' || ch == 'i'
                || ch == 'o' || ch == 'u') {
            ++vowels
        } else if (ch in 'a'..'z') {
            ++consonants
        } else if (ch in '0'..'9') {
            ++digits
        } else if (ch == ' ') {
            ++spaces
        }
    }

    println("Vowels: $vowels")
    println("Consonants: $consonants")
    println("Digits: $digits")
    println("White spaces: $spaces")
}

When you run the program, the output will be:

Vowels: 7
Consonants: 11
Digits: 2
White spaces: 3

In the above example, we've 4 conditions for each of the checks.

  • The first condition checks whether the character is a vowel or not.
  • The else if condition following if is to check whether the character is a consonant or not. The order should be the same otherwise, all vowels are treated as consonants as well.
  • The 3rd condition (else-if) is to check whether the character is between 0 to 9 or not.
  • Finally, the last condition is to check whether the character is a space character or not.

For this, we've lowercased the line using toLowerCase(). This is an optimization done not to check for capitalized A to Z and vowels.

We've used length() function to know the length of the string and charAt() to get the character at the given index (position).

Here's the equivalent Java code: Java program to count number of vowels and consonants in a sentence.


Example 2: Program to count vowels, consonants, digits and spaces using when

fun main(args: Array<String>) {
    var line = "This website is aw3som3."
    var vowels = 0
    var consonants = 0
    var digits = 0
    var spaces = 0

    line = line.toLowerCase()
    for (i in 0..line.length - 1) {
        val ch = line[i]
        when (ch) {
            'a', 'e', 'i', 'o', 'u' -> ++vowels
            in 'a'..'z' -> ++consonants
            in '0'..'9' -> ++digits
            ' ' -> ++spaces
        }
    }

    println("Vowels: $vowels")
    println("Consonants: $consonants")
    println("Digits: $digits")
    println("White spaces: $spaces")
}

The output of the program is the same as Example 1.

Here, you can see we've used a simple when expression to remove the if-else statement. This makes the code a lot less and easier to understand as well.

Did you find this article helpful?