Introduction
Counting the number of vowels and consonants in a string is a common task in text processing. This guide will show you how to perform this task using both traditional Java methods and Java 8's Stream API.
Problem Statement
Create Java programs that take a string input and count the number of vowels and consonants in the string using both traditional and Java 8 methods.
Example 1:
- Input:
"Hello World"
- Output:
Vowels: 3, Consonants: 7
Example 2:
- Input:
"Java Programming"
- Output:
Vowels: 5, Consonants: 9
Approach 1: Using Traditional Methods (Without Java 8)
Solution Steps
- Input String: Accept a string input from the user.
- Normalize the String: Convert the string to lowercase to make the comparison case-insensitive.
- Iterate Over the Characters: Loop through each character of the string.
- Count Vowels and Consonants: Use
if-else
conditions to check whether each character is a vowel or consonant and increment the respective counters. - Output the Result: Display the counts of vowels and consonants.
Java Program
import java.util.Scanner;
/**
* Java Program to Count Vowels and Consonants in a String (Without Java 8)
* Author: https://www.javaguides.net/
*/
public class VowelConsonantCounterTraditional {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Step 1: Input String
System.out.print("Enter a string: ");
String input = scanner.nextLine();
// Step 2: Normalize the String
input = input.toLowerCase();
// Step 3: Initialize vowel and consonant counters
int vowelCount = 0;
int consonantCount = 0;
// Step 4: Iterate over each character in the string
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
// Step 5: Check if the character is a vowel
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
vowelCount++;
}
// Step 6: Check if the character is a consonant
else if (c >= 'a' && c <= 'z') {
consonantCount++;
}
}
// Step 7: Output the Result
System.out.println("Vowels: " + vowelCount + ", Consonants: " + consonantCount);
}
}
Output Example
For the input "Hello World"
, the output will be:
Enter a string: Hello World
Vowels: 3, Consonants: 7
Explanation
- Input: The program prompts the user to enter a string.
- Normalization: The string is converted to lowercase to ensure consistent comparisons.
- Iteration: The program loops through each character in the string.
- Vowel and Consonant Counting: The program checks if each character is a vowel or consonant using conditional statements and increments the corresponding counter.
- Output: The program displays the counts of vowels and consonants.
Approach 2: Using Java 8 Stream API
Solution Steps
- Input String: Accept a string input from the user.
- Normalize the String: Convert the string to lowercase to make the comparison case-insensitive.
- Filter and Count Vowels: Use a stream to filter the characters that are vowels and count them.
- Filter and Count Consonants: Use a stream to filter the characters that are consonants and count them.
- Output the Result: Display the counts of vowels and consonants.
Java Program
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.function.Predicate;
/**
* Java Program to Count Vowels and Consonants in a String using Java 8
* Author: https://www.javaguides.net/
*/
public class VowelConsonantCounterJava8 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Step 1: Input String
System.out.print("Enter a string: ");
String input = scanner.nextLine();
// Step 2: Normalize the String
input = input.toLowerCase();
// Step 3: Define the sets of vowels
List<Character> vowels = Arrays.asList('a', 'e', 'i', 'o', 'u');
// Step 4: Filter and Count Vowels
long vowelCount = input.chars()
.mapToObj(c -> (char) c)
.filter(vowels::contains)
.count();
// Step 5: Filter and Count Consonants
Predicate<Character> isAlphabet = c -> c >= 'a' && c <= 'z';
long consonantCount = input.chars()
.mapToObj(c -> (char) c)
.filter(isAlphabet.and(c -> !vowels.contains(c)))
.count();
// Step 6: Output the Result
System.out.println("Vowels: " + vowelCount + ", Consonants: " + consonantCount);
}
}
Output Example
For the input "Hello World"
, the output will be:
Enter a string: Hello World
Vowels: 3, Consonants: 7
Explanation
- Input: The program prompts the user to enter a string.
- Normalization: The string is converted to lowercase to ensure consistent comparisons.
- Vowel and Consonant Counting: The program uses streams to filter and count vowels and consonants efficiently.
- Output: The program displays the counts of vowels and consonants.
Conclusion
This guide demonstrated how to count vowels and consonants in a string using both traditional methods and the Java 8 Stream API. The traditional approach uses a loop and conditional statements, while the Java 8 approach leverages streams to perform the task in a more functional and concise manner. Both methods are effective, and the choice between them depends on your preference and the context in which you're working.
Comments
Post a Comment
Leave Comment