Counting Words and Characters in a Text File: A Java Program

  • Context: Comp Sci 
  • Thread starter Thread starter Hiche
  • Start date Start date
  • Tags Tags
    File Java Program
Click For Summary

Discussion Overview

The discussion revolves around creating a Java program that counts the number of words and characters in a text file. Participants explore how to read a file, handle input arguments, and implement counting logic, focusing on the limitations of using a specific class provided by the instructor.

Discussion Character

  • Homework-related
  • Technical explanation
  • Exploratory

Main Points Raised

  • One participant asks how to take a .txt file as an argument in Java and expresses confusion about counting words and characters.
  • Another suggests using String Tokenizers to count words by reading lines from the file.
  • A participant shares their code but notes it is not functioning as expected, seeking help to identify issues.
  • Another participant acknowledges problems in the provided code but offers an alternative approach that worked for them, asking if the original poster would like to hear it.
  • One participant mentions specific functions like readString() and readChar() that could be useful for the task.
  • A participant clarifies that the In class is not standard Java and emphasizes the need to understand its methods, as it is provided by the instructor.
  • A later reply corrects the loop condition in the original code, changing from StdIn.isEmpty() to in0.isEmpty() and explains the context of the In class.

Areas of Agreement / Disagreement

Participants do not reach a consensus on the best approach to implement the program, and multiple competing views and solutions are presented throughout the discussion.

Contextual Notes

Participants express uncertainty about the methods available in the In class and the implications of using it, as well as the correctness of their proposed solutions.

Hiche
Messages
82
Reaction score
0

Homework Statement



Write a program that takes a file name as argument and counts the number of words and the number of characters (without spaces) in the document.

Homework Equations


The Attempt at a Solution



How exactly should my program take a .txt file as an argument? Do I simply:

Code:
String str = args[0];

And the contents of the .txt file are stored as strings? (The file is a text file with only letters).

And how to check for each word inside that file? Let it read the string till encountering a space then (by previously declaring a count variable) increment count? I'm confused here. Is it that same as just studying a string?
 
Last edited:
Physics news on Phys.org
You can count the numbers of words by reading the lines from the .txt file and splitting them using String Tokenizers.


http://download.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html
 
Last edited by a moderator:
Sadly, we are limited to using the In class for this program. I came up with this but it is not working:

Code:
public class DocumentS
{
	public static void main(String[] args)
	{
		In in0 = new In(args[0]);
		
		int wordCount = 0;
		int charCount = 0;
		
		while (!StdIn.isEmpty())
		{
			wordCount++;
			String str = in0.readAll(); 
			for (int i = 1; i <= str.length(); i++)
				charCount++; 
		}
		System.out.println("Number of words: " + wordCount);
		System.out.println("Number of characters: " + charCount);
	}
}

It compiles fine but when I pass the .txt file as an argument, nothing happens. I don't know if the algorithm is right, but I really need help in this.
 
I do see some problem in the above code but i don't know what exactly, so sorry. Also, i don't know much about "In class", although i found something on "In.class" online and modified it a bit to count the numbers of words and characters in a file and it works fine. Would you like to know about that? or you would like to stick to your version and fix it?
 
I saw there are functions like
readString() // it reads one word at a time
readChar() // it reads one character at a time



Therefore use these functions.
Also take filename as follows

String file = args[0];
In in0 = new In(file);
 
Hiche said:
Sadly, we are limited to using the In class for this program.
I don't believe that the In class is present in standard Java, but is a class that your instructor provides for you to use. Since you are limited to using just this class, you need to understand the methods and properties that are exposed by this class. We can't point you in the right direction without knowing what things are in this class.
 
Last edited:
Code:
public class DocumentS
{
	public static void main(String[] args)
	{
		In in0 = new In(args[0]);
		
		int wordCount = 0;
		int charCount = 0;
		
		while (!in0.isEmpty())
		{
			wordCount++;
			String str = in0.readString(); 
			for (int i = 1; i <= str.length(); i++)
				charCount++; 
		}
		System.out.println("Number of words: " + wordCount);
		System.out.println("Number of characters: " + charCount);
	}
}

I managed to fix this (I changed StdIn.isEmpty() to in0.isEmpty() since we are looping until the end of the file we attached rather than wait for no input which is StdIn). The In class is part of an external library our instructor provided for us. I though many people knew about it, but I guess I was wrong. The library is in this link if anyone is remotely interested: http://www.sendspace.com/file/t7wqmp

Thanks for the replies.
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 23 ·
Replies
23
Views
9K
Replies
1
Views
3K
  • · Replies 14 ·
Replies
14
Views
4K
  • · Replies 15 ·
Replies
15
Views
3K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 7 ·
Replies
7
Views
3K