Introduction
Validating whether a string contains only letters or digits is a common requirement in various applications, particularly when dealing with user input validation, form processing, or data sanitization. While Java 8 provides a modern and efficient approach to this task using Streams, it’s also useful to understand the traditional methods used before Java 8. In this guide, we’ll explore how to check if a string contains only letters or digits using both the traditional approach and Java 8 Streams.
Problem Statement
The task is to create a Java program that:
- Accepts a string as input.
- Checks if the string contains only letters or digits.
- Outputs whether the string is alphanumeric or not.
Example 1:
- Input: "Hello123"
- Output: "The string contains only letters or digits."
Example 2:
- Input: "Hello@123"
- Output: "The string does not contain only letters or digits."
Solution Steps
- Input String: Start with a string that can either be hardcoded or provided by the user.
- Check for Letters and Digits (Traditional Approach): Use the charAt()method andCharacter.isLetterOrDigit()to validate each character.
- Check for Letters and Digits (Java 8 Streams): Use the Stream API to check if all characters in the string are either letters or digits.
- Display the Result: Print whether the string is alphanumeric or not.
Java Program
Traditional Approach: Check If the String Contains Only Letters or Digits
/**
 * Traditional Approach: Check If the String Contains Only Letters or Digits
 * Author: https://www.rameshfadatare.com/
 */
public class CheckAlphanumericTraditional {
    public static void main(String[] args) {
        // Step 1: Take input string
        String input = "Hello123";
        // Step 2: Check if the string contains only letters or digits using traditional approach
        boolean isAlphanumeric = isAlphanumericTraditional(input);
        // Step 3: Display the result
        if (isAlphanumeric) {
            System.out.println("The string contains only letters or digits.");
        } else {
            System.out.println("The string does not contain only letters or digits.");
        }
    }
    // Method to check if a string contains only letters or digits (traditional approach)
    public static boolean isAlphanumericTraditional(String str) {
        for (int i = 0; i < str.length(); i++) {
            if (!Character.isLetterOrDigit(str.charAt(i))) {
                return false;
            }
        }
        return true;
    }
}
Java 8 Approach: Check If the String Contains Only Letters or Digits
/**
 * Java 8: Check If the String Contains Only Letters or Digits
 * Author: https://www.rameshfadatare.com/
 */
public class CheckAlphanumericJava8 {
    public static void main(String[] args) {
        // Step 1: Take input string
        String input = "Hello123";
        // Step 2: Check if the string contains only letters or digits using Java 8 Streams
        boolean isAlphanumeric = isAlphanumericJava8(input);
        // Step 3: Display the result
        if (isAlphanumeric) {
            System.out.println("The string contains only letters or digits.");
        } else {
            System.out.println("The string does not contain only letters or digits.");
        }
    }
    // Method to check if a string contains only letters or digits (Java 8 Streams approach)
    public static boolean isAlphanumericJava8(String str) {
        return str.chars().allMatch(Character::isLetterOrDigit);
    }
}
Explanation of the Programs
- 
Traditional Approach: The first program uses a forloop combined withCharacter.isLetterOrDigit()to check each character in the string. If any character is neither a letter nor a digit, the method returnsfalse; otherwise, it returnstrue.
- 
Java 8 Approach: The second program uses the Stream API. The chars()method converts the string into anIntStream, andallMatch(Character::isLetterOrDigit)checks if all characters in the stream are either letters or digits.
Output Example
For both methods, the output will be:
Example 1:
Input: Hello123
Output: The string contains only letters or digits.
Example 2:
Input: Hello@123
Output: The string does not contain only letters or digits.
Advanced Considerations
- 
Case Sensitivity: Both methods consider all alphabetic characters, regardless of case. Uppercase and lowercase letters are treated equally as valid letters. 
- 
Performance Considerations: Both methods are efficient for typical string lengths. The traditional method is straightforward and easy to understand, while the Java 8 approach is more concise and leverages modern Java features. 
- 
Handling Edge Cases: Both methods handle empty strings by returning true, as there are no non-alphanumeric characters present. You might want to adjust this behavior based on specific application requirements.
Conclusion
This guide provides two methods for checking if a string contains only letters or digits: the traditional approach using a for loop and Character.isLetterOrDigit(), and a more modern approach using Java 8 Streams. Both methods are effective, but the Java 8 approach offers a more functional and concise solution. Depending on your needs and the style of your codebase, either method can be used to achieve the desired result.