CS 201 - Computer Science I - Fall 2008
Lab 3 - Strings
Loyola College >
Department of Computer Science >
Dr. James Glenn >
CS 201 >
Labs >
Lab 3
Due
Electronic version: Wednesday, September 24th at 11:59pm.
Labs submitted one day late will be assessed a
20% penalty. Labs will not be accepted more than one day late.
Objectives
- to create and manipulate String objects
- to use classes and methods described in the online Java documentation
Reading
Anderson and Franceschi, § 3.1-3.7
Introduction
There are five reasons for invoking methods:
- to change the state of an object;
- to retrieve data that is stored in an object;
- to calculate a result;
- to get data from the user; and
- to display the result of an operation.
In section 3.7, Anderson and Franceschi introduce the String class
and some of the methods that can be used with it. Many more String
methods are available; their descriptions can be found in the online
Java API documentation.
For each method, the documentation lists the information you need to know in
order to use the method. This information includes the following.
- The type of the value returned by the method; if the method is
invoked solely for its effect on the object this will be void.
- Whether the method is a class method or an instance method. Class
methods are listed with static before the return type.
- The name of the method.
- The types of the method arguments. Names are also given for the
arguments but from the point of view of someone using the method these names
serve only as a reminder of what the arguments are for.
- A brief description of what the method does. Clicking on the method
name will reveal more detailed information.
The documentation also lists a plethora of other classes. For each
class, the documentation includes the name of
the package it is in (this can be used with an import
statement at the beginning of a file to allow you to use classes in
that package), a description of the class,
a list of the constructors that are available for that
class, and a list of the methods that are available for that class.
Problem Description
In this lab you will learn about one of the techniques mass-marketing
companies use to discover your e-mail address, called e-mail
harvesting. An e-mail harvester is a program that seaches the Web
for files containing e-mail addresses. For this assignment you will
design a program that searches a user-provided string to see if it
contains an e-mail address.
Assignment
Write a program
called EmailHarvester
that prompts a user for the for the text of interest.
The program then displays the first e-mail address contained in that
text. For our purposes an e-mail address is composed of an "@" and
the two maximal-length strings that preceed and follow the "@" with no
embedded whitespace. The program should output an "@" if no e-mail
address is found. Your program should do the following:
- Prompt the user to enter a line of text.
- Declare and instantiate a Scanner object and use it
to read a line of text from the user.
- Locate the first "@" in the input and store its location.
- Determine where the address begins by using the location of the "@" and the method lastIndexOf and save the location.
- Determine where the address ends by using the location of the "@" and the method indexOf and save that location.
- Store the e-mail address by extracting the substring from the message.
- Display the address in the terminal window using
System.out.println
Hint: Before you begin programming, you may want to sketch out a
possible input and label the parts of the drawing that you are
interested in so that you can visualize the specific information that
will be stored during the intermediate steps of this program.
Once the program described above works, make your program more robust
by verifying that the program works correctly by testing the following
cases:
- when the address is embedded in the middle of the input,
- when the address is at the beginning of the input,
- when the address is at the end of the input,
- when there are multiple addresses (find the first one),
- when the address is the only input, and
- Outputs "@" when there is no address.
Hint: It is acceptable to modify the user's input as long as the
modification does not effect the ability of the program to function
correctly.
Exercise
Provide a memory use diagram that reflects the values in your
variables and objects at the end of your code's execution. Include objects
that no longer have references to them.
Be sure to properly sketch primitive variables and reference variables
(i.e. objects).
Submission
Submit the source code (.java file) as an attachment to an e-mail
sent to your instructor. The exercise can be turned in as hardcopy or
as another electronic attachment created with an application such as
Microsoft Visio.
The original problem description is from Java Program Design by
Cohoon, J. and J. Davidson, McGraw Hill Companis, Inc.: New York, 2004.
Dr. Dawn Lawrie wrote much of
the instructions for this lab.