diff options
author | Matt Strapp <matt@mattstrapp.net> | 2022-05-24 11:18:46 -0500 |
---|---|---|
committer | Matt Strapp <matt@mattstrapp.net> | 2022-05-24 11:19:55 -0500 |
commit | 7a73162607544204032aa66cce755daf21edebda (patch) | |
tree | 58578e01f15f34a855d99c32898db9d7a1603e67 /OLD/csci1913/Java/project3/Words.java | |
parent | do some stuff (diff) | |
download | homework-7a73162607544204032aa66cce755daf21edebda.tar homework-7a73162607544204032aa66cce755daf21edebda.tar.gz homework-7a73162607544204032aa66cce755daf21edebda.tar.bz2 homework-7a73162607544204032aa66cce755daf21edebda.tar.lz homework-7a73162607544204032aa66cce755daf21edebda.tar.xz homework-7a73162607544204032aa66cce755daf21edebda.tar.zst homework-7a73162607544204032aa66cce755daf21edebda.zip |
Graduate
Signed-off-by: Matt Strapp <matt@mattstrapp.net>
Diffstat (limited to 'OLD/csci1913/Java/project3/Words.java')
-rw-r--r-- | OLD/csci1913/Java/project3/Words.java | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/OLD/csci1913/Java/project3/Words.java b/OLD/csci1913/Java/project3/Words.java deleted file mode 100644 index 0487267..0000000 --- a/OLD/csci1913/Java/project3/Words.java +++ /dev/null @@ -1,90 +0,0 @@ -package project3; -// -// WORDS. An iterator that reads lower case words from a text file. -// -// James Moen -// 19 Apr 17 -// - -import java.io.FileReader; // Read Unicode chars from a file. -import java.io.IOException; // In case there's IO trouble. - -// WORDS. Iterator. Read words, represented as STRINGs, from a text file. Each -// word is the longest possible contiguous series of alphabetic ASCII CHARs. - -class Words { - private int ch; // Last CHAR from READER, as an INT. - private FileReader reader; // Read CHARs from here. - private StringBuilder word; // Last word read from READER. - - // Constructor. Initialize an instance of WORDS, so it reads words from a file - // whose pathname is PATH. Throw an exception if we can't open PATH. - - public Words(String path) { - try { - reader = new FileReader(path); - ch = reader.read(); - } catch (IOException ignore) { - throw new IllegalArgumentException("Cannot open '" + path + "'."); - } - } - - // HAS NEXT. Try to read a WORD from READER, converting it to lower case as we - // go. Test if we were successful. - - public boolean hasNext() { - word = new StringBuilder(); - while (ch > 0 && !isAlphabetic((char) ch)) { - read(); - } - while (ch > 0 && isAlphabetic((char) ch)) { - word.append(toLower((char) ch)); - read(); - } - return word.length() > 0; - } - - // IS ALPHABETIC. Test if CH is an ASCII letter. - - private boolean isAlphabetic(char ch) { - return 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z'; - } - - // NEXT. If HAS NEXT is true, then return a WORD read from READER as a STRING. - // Otherwise, return an undefined STRING. - - public String next() { - return word.toString(); - } - - // READ. Read the next CHAR from READER. Set CH to the CHAR, represented as an - // INT. If there are no more CHARs to be read from READER, then set CH to -1. - - private void read() { - try { - ch = reader.read(); - } catch (IOException ignore) { - ch = -1; - } - } - - // TO LOWER. Return the lower case ASCII letter which corresponds to the ASCII - // letter CH. - - private char toLower(char ch) { - if ('a' <= ch && ch <= 'z') { - return ch; - } else { - return (char) (ch - 'A' + 'a'); - } - } - // MAIN. For testing. Open a text file whose pathname is the 0th argument from - // the command line. Read words from the file, and print them one per line. - - public static void main(String[] args) { - Words words = new Words(args[0]); - while (words.hasNext()) { - System.out.println("'" + words.next() + "'"); - } - } -} |