Hello,
My task was to write a java program which counts words, sentences and syllables. The program should read from a .txt file. The word and sentence count algorithms are pretty basic but I want to explain my method of counting syllables. In English, each vowel in a word increase the syllable count by one. If two vowels are together then instead of increasing the syllable count twice they only increase it once. Y is also included as a vowel. An e or y at the end of a word don't increase the syllable count.
My program compiles, however I get a NullPointerException when I run the main class. I couldn't understand what could be causing the problem. Thanks for your help!
My main class:
My task was to write a java program which counts words, sentences and syllables. The program should read from a .txt file. The word and sentence count algorithms are pretty basic but I want to explain my method of counting syllables. In English, each vowel in a word increase the syllable count by one. If two vowels are together then instead of increasing the syllable count twice they only increase it once. Y is also included as a vowel. An e or y at the end of a word don't increase the syllable count.
My program compiles, however I get a NullPointerException when I run the main class. I couldn't understand what could be causing the problem. Thanks for your help!
import java.io.*; import java.util.*; public class FleschRI { String line1 = ""; String line2 = ""; int wordcount = 0; int syllablecount = 0; int sentencecount = 0; BufferedReader inFile; StringTokenizer tokenizer; public FleschRI(String file) throws FileNotFoundException, IOException { BufferedReader inFile = new BufferedReader(new FileReader(file)); while(true){ line2 = (inFile.readLine()).toLowerCase(); if (line2 == null) break; line1 = line1 + line2; } } public void wordcount() { StringTokenizer tokenizer = new StringTokenizer(line1); while(tokenizer.hasMoreTokens()) { wordcount = tokenizer.countTokens(); } System.out.println(wordcount); } public void sentencecount() { StringTokenizer tokenizer = new StringTokenizer(line1); while(tokenizer.hasMoreTokens()) { String string = tokenizer.nextToken(); char c = string.charAt(string.length() - 1); if (c == '.' || c == '?' || c == '!') sentencecount++; } System.out.println(sentencecount); } public void syllablecount() { StringTokenizer tokenizer = new StringTokenizer(line1); while(tokenizer.hasMoreTokens()) { int i, j; String string = tokenizer.nextToken(); for(i = 0; i < string.length()-1; i++){ char a = string.charAt(i); for(j = 1; j < string.length()-2; j++) { char b = string.charAt(j); if(a == 'a' || a == 'o' || a == 'e' || a == 'u' || a == 'i' || a == 'y' ) { syllablecount++; } if((a == 'a' || a == 'o' || a == 'e' || a == 'u' || a == 'i' || a == 'y' ) && (b == 'a' || b == 'o' || b == 'e' || b == 'u' || b == 'i' || b == 'y' )) { syllablecount--; } if(string.charAt(string.length() - 1) == 'e' || string.charAt(string.length() - 1) == 'y') { syllablecount--; } } } } } }
My main class:
import java.io.*; public class FleschRITester { public static void main(String args[]) throws FileNotFoundException, IOException{ FleschRI article = new FleschRI("article.txt"); article.wordcount(); article.sentencecount(); article.syllablecount(); } }