Counting Characters
The file Count.java contains
the skeleton of a program to read in a string (a sentence or phrase)
and count the number of blank spaces in the string. The program currently has
the declarations and initializations and prints the results. All it needs
is a loop to go through the string character by character and count the characters that are the spaces by updating
the countBlank variable. Since
we know how many characters there are (the length of the string) we
use a count controlled loop -- for loops are especially well-suited for
this.
- Add the for loop to the program. Inside the for loop you need to access
each individual character -- the charAt method of the String class lets
you do that. The assignment statement
ch = phrase.charAt(i);
assigns the variable ch (type char) the character that is in index i of
the String phrase. In your for loop you can use an assignment similar to
this (replace i with your loop control variable if you use something other
than i). NOTE: You could also directly use phrase.charAt(i) in your if (without assigning it to a variable).
- Test your program on several phrases to make sure it is correct.
- Now modify the program so that it will count several different characters,
not just blank spaces. To keep things relatively simple we'll count the a's,
e's, s's, and t's (both upper and lower case) in the string. You need to declare
and initialize four additional counting variables (e.g. countA and so on).
Your current if could be modified to cascade but another solution is
to use a switch statement. Replace the current if with a
switch that accounts for the 9 cases we want to count (upper and lower case a, e,
s, t, and blank spaces). The cases will be based on the value of the ch
variable. The switch starts as follows -- complete it.
switch (ch)
{
case 'a':
case 'A': countA++;
break;
case ....
}
Note that this switch uses the "fall through" feature of switch statements. If
ch is an 'a' the first case matches and the switch continues execution
until it encounters the break hence the countA variable would be
incremented.
- Add statements to print out all of the counts.
- It would be nice to have the program let the user keep entering phrases
rather than having to restart it every time. To do this we need another loop
surrounding the current code. That is, the current loop will be nested inside
the new loop. Add an outer while loop that will continue to execute as long as the
user does NOT enter the phrase quit. Modify the prompt to tell the
user to enter a phrase or quit to quit. Note that all of the
initializations for the counts should be inside the while loop (that is, we want
the counts to start over for each new phrase entered by the user). All you
need to do is add the while statement (and think about placement of
your reads so the loop works correctly). Be sure to go through the program and
properly indent after adding code -- with nested loops the inner loop should be indented.
Submit your Count.java to the drop box. Your lab document should includea transcript of your program running on the inputs, "I tell thee that thou art foul!" and "Now is the time that tries Izod's tires."
Sample transcript
Character Counter
Enter a sentence or phrase, quit to end: I tell thee that thou art foul!
Number of blank spaces: 6
Number of As: 2
Number of Es: 3
Number of Ss: 0
Number of Ts: 6
Enter a sentence or phrase, quit to end: Now is the time that tries Izod's tires.
Number of blank spaces: 7
Number of As: 1
Number of Es: 4
Number of Ss: 4
Number of Ts: 6
Enter a sentence or phrase, quit to end: quit