Java: How to Count Words

Counting words in a string is a common task in text processing and programming. This tutorial by The Coding College will guide you through different methods to count words in Java, focusing on simplicity and best practices.

What Defines a Word?

A “word” is typically defined as a sequence of characters separated by whitespace (spaces, tabs, or newlines). In this tutorial, we’ll assume words are separated by spaces unless otherwise specified.

Method 1: Using split() Method

The split() method splits a string into an array based on a specified delimiter. For word counting, the delimiter is a space " ".

Example: Counting Words with split()

public class Main {
    public static void main(String[] args) {
        String text = "Java is a versatile programming language";
        
        // Splitting the string into words
        String[] words = text.split("\\s+"); // \\s+ matches one or more spaces
        int wordCount = words.length;

        System.out.println("The number of words in the text is: " + wordCount);
    }
}

Output:

The number of words in the text is: 6

Method 2: Using a Loop

This method counts words manually by iterating through each character in the string.

Example: Counting Words with a Loop

public class Main {
    public static void main(String[] args) {
        String text = "Java makes programming fun and exciting.";
        int wordCount = 0;

        boolean isWord = false;
        int endOfLine = text.length() - 1;

        for (int i = 0; i < text.length(); i++) {
            // Check if the character is a letter
            if (Character.isLetter(text.charAt(i)) && i != endOfLine) {
                isWord = true;
            } else if (!Character.isLetter(text.charAt(i)) && isWord) {
                wordCount++;
                isWord = false;
            } else if (Character.isLetter(text.charAt(i)) && i == endOfLine) {
                wordCount++;
            }
        }

        System.out.println("The number of words in the text is: " + wordCount);
    }
}

Output:

The number of words in the text is: 6

Method 3: Using StringTokenizer

The StringTokenizer class splits a string into tokens based on delimiters.

Example: Counting Words with StringTokenizer

import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {
        String text = "Learning Java is fun and rewarding.";

        StringTokenizer tokenizer = new StringTokenizer(text);
        int wordCount = tokenizer.countTokens();

        System.out.println("The number of words in the text is: " + wordCount);
    }
}

Output:

The number of words in the text is: 6

Method 4: Using Regular Expressions

You can use regular expressions to match and count words in a string.

Example: Counting Words with Regex

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

public class Main {
    public static void main(String[] args) {
        String text = "Regex is a powerful tool for text processing.";

        // Regular expression for words
        Pattern pattern = Pattern.compile("\\b\\w+\\b");
        Matcher matcher = pattern.matcher(text);

        int wordCount = 0;
        while (matcher.find()) {
            wordCount++;
        }

        System.out.println("The number of words in the text is: " + wordCount);
    }
}

Output:

The number of words in the text is: 7

Method 5: Counting Words from User Input

You can count words from a user-provided string using the Scanner class.

Example: Counting Words from User Input

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Enter a sentence:");
        String text = scanner.nextLine();

        String[] words = text.split("\\s+");
        int wordCount = words.length;

        System.out.println("The number of words in the text is: " + wordCount);

        scanner.close();
    }
}

Output:

Enter a sentence:
Java is amazing!
The number of words in the text is: 3

Best Practices for Word Counting

  • Trim Whitespace: Use trim() to remove leading and trailing spaces before counting words.
text = text.trim();
  • Handle Empty Strings: Check if the string is empty before counting.
if (text.isEmpty()) {
    System.out.println("The string is empty.");
}
  • Customize Delimiters: Modify the delimiter in split() or StringTokenizer to count words separated by specific characters (e.g., commas, semicolons).

Conclusion

Counting words in Java can be done using various methods, from basic string operations to advanced regex. Each method has its advantages, so choose one based on your requirements.

For more Java tutorials and examples, visit The Coding College and continue learning with confidence!

Leave a Comment