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?

Your builder path starts here. Builders don't just know how to code, they create solutions that matter.

Escape tutorial hell and ship real projects.

Try Programiz PRO
  • Real-World Projects
  • On-Demand Learning
  • AI Mentor
  • Builder Community