COSC 1010 Introduction to Software Problem Solving
Fall 2010
Homework Assignment #2
![Knights Who Say Ni](ni-knights.jpg)
*
"We are the keepers of the sacred words: Ni, Ping, and Nee-womm."
"Those who hear them seldom live to tell the tale!"
--
Monty Python and the Holy Grail
Due: Wednesday, September 15th, 11:00am CDT
Submit: Turn in your "Project2.java" using D2L Dropbox, as instructed
in Lab.
Work is to be completed individually. You may submit multiple times, but
only the last turnin will be kept. The automatic submission system will
not accept work after the deadline.
Word Filter
The rise of the Information Age has rekindled many debates on the
topic of censorship. Regardless of ideological stances, the general
problem of detecting and censoring content remains surprisingly complex.
Write a program that prompts for a "forbidden" word, prompts for a
replacement word, and then filters a body of text. The forbidden word should
be replaced whenever it occurs, regardless of uppercase or lowercase.
End with a printout counting the number of replacements performed.
Example Runs
In the examples below, I use text in blue to distinguish the output of the program from the input I typed. This is
for purpose of clarity only; your program will not print text in different colors.
Example #1
Enter word to be filtered out:
ni
Enter word to replace it with:
herring
Enter text to filter. Hit Control-Z to stop.
The wet dog ni
sighs by the dry ni fire
ni at night.
The
wet
dog
herring
sighs
by
the
dry
herring
fire
herring
at
night.
Replaced "ni" with "herring" 3 times.
Example #2
Enter word to be filtered out:
foo
Enter word to replace it with:
bar
Enter text to filter. Hit Control-Z to stop.
FOO fOo Foo Oof OOF oOf and so forth.
bar
bar
bar
Oof
OOF
oOf
and
so
forth.
Replaced "foo" with "bar" 3 times.
Notes
Note that the output does not need to preserve the original lines
or spacing of the input.
Depending on how you test your program, you may see lines of
output interleaved with input as you type your tests in. This is
normal.
Note that in the example above, "night" does not become
"herringght"; you are not required to filter out the word if it is
part of a larger word.
In order to read in an arbitrary number of words, you will need
to use a simple loop structure. Instantiate a Scanner object:
Scanner keyboard = new Scanner(System.in);
and then form a loop that will continue reading words until the "end of input" marker is reached:
while (keyboard.hasNext())
{
...
}
The code between the curly braces will be repeated until the user pressed the
Control key and the Z key at the same time. (Note: Unix and OS X machines use
Control-D, instead.)
We're starting to use objects in the Java Library more thoroughly now.
Documentation for the Scanner and String classes can be found in your textbook,
and also online in the Java API documents:
Scanner class and
String class.
* - This project is not endorsed by the Knights Who Until Recently Said Ni, any other fictional characters, or their legal copyright holders.
Back
[Revised 2010 Sep 03 20:09 DWB]