Lab 03
Lab 03
PURPOSE
Working with objects is central to programming in an Object – Oriented Language such as Java.
In this lab you will work with
objects that are used to create a Graphical User Interface, or GUI
Strings are used for both input and output in our programs.
TO PREPARE
Read: Read Chapters
create a directory called lab3 in which you should save all the files completed as part of this lab.
TO COMPLETE
This is an individual lab. You may get help from other students as well as the lab tutor.
Hand in a copy of your completed programs to the lab tutor.
This portion of the lab will take you through the step – by – step process for editing, compiling, and running your first Java
application.
PAGE 3.1
{
public static void main(String[] args)
{
int number;
number = 31;
number = number + 5;
}
}
PAGE 3.2
J A V A L A B M A N U A L
For a program to compile, it must follow all the rules of Java syntax. If your file contains any kind of syntax error, such as
a missing semi-colon or quote, the program will not compile.
How can you tell if the program did or did not compile?
If it does not compile, you will see one or more error messages in Textpad. Error messages can be very
informative. But, since this is a first program, any error message may be difficult for you to read. You must go
back to Step 2 and edit the existing file to remove any syntax errors and then recompile the code. Except for
spacing, you must follow the sample code exactly.
If the file does compile , you will hear a sound and your file First.java will be displayed. The result of the
compilation process is the creation of a new file called First.class that contains the Java bytecode version of
the program. If you would like to see the listing of this file, again go to Files – Open and choose Files of
Type: All Files (*.*) and you should see the name of the bytecode file.
System.out.println(number) ; prints the value stored in the memory location number to the
monitor. System.out is the monitor. println is a message to print a new line. What is printed in this
new line is determined by what is placed between the pair of parentheses. In this case, the variable
number is passed, so the value stored in number is printed twice, after number is initialized to 31
and after 5 is added onto the value stored in number .
Compile and run the modified program. Record the results.
_____________________________________________________________________________________________
_____________________________________________________________________________________________
_____________________________________________________________________________________________
PAGE 3.3
o Remove the .java and .class files from MyDocuments.
highlight the .java and .class files that you created and delete them by choosing File –
Delete or click on the big red X on the menu bar.
You are always expected to follow the Java guidelines for choosing identifiers.
PAGE 3.4
J A V A L A B M A N U A L
height in pixels
in First.java , the message will be displayed in a JDialog box that
is centered in a JFrame window. A JFrame object can be
displayed on the computer monitor as a window with characteristics,
or data values, that include height , width, and title .
JFrame object
To better understand the code that displays this message, the program will be written in small increments that can be
compiled and executed. Space is allotted for you to record the results of each step.
Step 1: Begin by opening IDE and enter the code required for all Java applications :
class HelloWorld
{
public static void main(String[] args)
{
}
}
Save the file with the required name HelloWorld.java in your lab03 directory.
Compile the program. Even though there are no statements to execute in the main method, it is a good idea to compile
programs frequently. This way, if an error has been made, it can be found more easily.
PAGE 3.5
To create , or instantiate , an object, use the new operator and the name of the class. The object creation – assignment
statement
is read right to left, "create a new JFrame object and assign it to frame ".
To the right is a state of memory diagram illustrating what is stored in
memory after the two statements is executed.
Step 2: Add the two new statements to the main method of your program. The comments are not part of the code and do
not need to be included when you enter the new code.
class HelloWorld
{
public static void main(String[] args)
{
JFrame frame; // declare a variable of type JFrame
frame = new JFrame(); // create a JFrame object & assign it to frame
}
}
Compile the code. Record the "essence of " the compiler error message.
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
The Java API library of classes is organized into various directories that contain definitions of classes that have some
commonality. The JFrame class is stored in the directory swing , which is a subdirectory of the directory javax . The
compiler must be told where the JFrame class can be found.
S t e p 3 : To correct the compiler error, add an import statement as the first line of code in the file.
import javax.swing.JFrame;
Compile the code and run the program. Record the results
________________________________________________________________________________________________
________________________________________________________________________________________________
To send a message to an object, a method is invoked on the object. A method that is invoked on an object is an instance
method . To invoke an instance method, follow the name of the object with a dot ( . ) followed by the name of the method,
which is always followed by a pair of parentheses.
objectName.methodName()
Information that is passed to a method is called an argument . Arguments are separated by commas and placed between
the parentheses.
PAGE 3.6
J A V A L A B M A N U A L
S t e p 4 : The instance method setTitle must have a String argument, representing the title to be displayed in the
JFrame object's titlebar.
frame.setTitle("My Hello World Program");
The instance method setSize has two arguments that represent the width and height, measured in the number of pixels,
of the JFrame .
frame.setSize(500, 500);
Add these two lines of code to the end of the body of the main method, Compile the code and run the program. Record the
results.
________________________________________________________________________________________________
________________________________________________________________________________________________
S t e p 5 : The JFrame object has an instance variable visible that initially stores false . The JFrame instance method
setVisible must have a boolean argument, either true or false . Add the statement
frame.setVisible(true);
at the end of the body of the method main .
Compile the code and run the program. Record the results.
________________________________________________________________________________________________
________________________________________________________________________________________________
N o t e : To close this program, click on the X in the upper right – hand corner of all windows that were opened when the
application was run.
S t e p 6 : Experiment by changing the integer arguments in the statement that sets the size of the JFrame object. Each
time compile and run the program. Then answer this question: which argument (first or second) represents the height of
the JFrame object and which argument represents the width ?
In your answer indicate how you made this determination.
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
PAGE 3.7
The JOptionPane class method showMessageDialog() is used to display a message in a dialog box.
S t e p 7 : Add the statement above at the end of the main method. In addition, because the JOptionPane class is also
defined in the javax.swing package, add an import statement to the beginning of the file. Your HelloWorld.java file
should now contain the following code:
import javax.swing.JOptionPane;
import javax.swing.JFrame;
class HelloWorld
{
public static void main(String[] args)
{
JFrame frame;
frame = new JFrame();
frame.setSize(500, 500);
frame.setTitle("My Hello World Program");
frame.setVisible(true);
JOptionPane.showMessageDialog(frame, "Hello World!");
}
}
Compile the code and run the program. Record the results. Does your program work as expect?
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
PAGE 3.8
J A V A L A B M A N U A L
Syntax Errors
A syntax error occurs when the rules of the language are violated. These errors are always found by the compiler. The
actual error message is determined by the compiler that is used.
Error 1: Eliminate the first double quote ( " ) in the statement
frame.setTitle(My Hello World Program");
When I made Error 1 and compiled the program on my home PC, I received two error messages for the single error.
Notice, that both error messages found the correct line on which the error was made, but one states the exact error .
Now compile your code. Record the "essence" of the error messages, e.g. " ')' expected " and
" Unclosed string literal "
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
Error 2: Correct Error 1. Then, eliminate the second " in the statement.
frame.setTitle("My Hello World Program);
Compile the code. Record only the "essence" of either the first or the most informative error message.
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
Error 3: Correct Error 2. Then, eliminate the semicolon at the end of the statement.
frame.setTitle("My Hello World Program")
Compile the code. Record only the "essence" of either the first or the most informative error message.
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
PAGE 3.9
Error 4: Correct Error 3. Then, misspell the word frame in the line.
JOptionPane.showMessageDialog(frame, "Hello World!");
Compile the code. Record only the "essence" of either the first or the most informative error message.
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
Error 5: Correct Error 4. Then, use incorrect capitalization in the word JOptionPane in the statement.
JOptionpane.showMessageDialog(frame, "Hello World!");
Compile the code. Record only the "essence" of either the first or the most informative error message.
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
Error 6: Correct Error 5. Then, omit one of the arguments in a method call. Replace the line.
JOptionPane.showMessageDialog(frame, "Hello World!");
with the line
JOptionpane.showMessageDialog("Hello World!");
Compile the code. Record only the "essence" of either the first or the most informative error message.
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
Runtime errors
A runtime error occurs during the execution, or running, of a program. Basically, the computer is instructed to do
something that it cannot do. Run – time errors cause the program to stop and error messages to be printed to the monitor.
For example, if a calculation involves division by zero, a runtime error message that declares an Arithmetic Exception may
be printed in the terminal window.
Error 7: Correct Error 6. Then change the spelling of the word main to Main.
public static void Main(String[] args)
Compile the code and run the program. Record any error message.
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
Error 8: Correct Error 7. The following error may be a runtime error, or, depending on the compiler, it may be found by
the compiler. Comment out the statement that creates the JFrame object.
//frame = new JFrame();
PAGE 3.10
J A V A L A B M A N U A L
If the code compiles, run the program. Is this error a runtime or compiler error? Record the error message.
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
Note: In the future, commenting out lines of code is a very good way to determine where errors are made.
Logic errors
A logic error occurs when the semantics of the code is correct, but the meaning of the code, the semantics, is incorrect. A
logic error is often called a bug. If your program has a bug, it cannot be found by the compiler or by the computer when the
program is run. Instead, it must be found by the programmer or by a person specifically assigned to test the program.
Examples of logic errors are calculations that give incorrect results and special situations that are not handled or considered.
You are expected to carefully test your programs to be sure that they are free of bugs.
Since our program is small, not many logic errors are possible.
Error 9: Correct Error 8. Then change the spelling of Hello to Hellow
frame.setTitle("My Hellow World Program");
Compile the code. Run the program if the code compiles. Record any error message.
________________________________________________________________________________________________
________________________________________________________________________________________________
PAGE 3.11
Using the newline character '\n'
Special characters, such as the newline character, can be printed using a sequence of two characters, the escape character,
'\' , followed by another character whose normal meaning "is escaped". The combination of the characters '\' and 'n'
represents the newline character '\n' , which returns the printer carriage to the beginning of the next line.
Modify the message that is displayed in the JDialog message box.
JOptionPane.showMessageDialog(frame, "Hello\nWorld!");
The entire program should now be.
import javax.swing.*;
class HelloWorld
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setSize(500,400);
frame.setTitle("My Hello World Program");
frame.setVisible(true);
JOptionPane.showMessageDialog(frame, "Hello\nWorld!");
}
}
Compile the revised code and run the program. Record the results.
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
W _________________________________________________________________________
o
r
l
d
!
Compile and run the program to make sure it works. What happened to the dimensions of the JDialog box?
________________________________________________________________________________________________
________________________________________________________________________________________________
Leave the modified statement in this program as we continue to add more to the program. See the Post-Lab Exercises for
more escape characters.
PAGE 3.12
J A V A L A B M A N U A L
The statement
JOptionPane.showMessageDialog(frame, "My name is " + name);
creates the same string for printing without storing it to sentence .
S t e p 1 0 : Edit your modified HelloWorld.java as follows:
Before any message is printed, prompt the user for his/her name.
After the Hello World message is printed, use a second message dialog to print the user's name.
Compile and run the program. After entering your name in the input dialog box, click the OK button. Record the results.
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
Run the program a second time. This time click the Cancel button instead. Record the results.
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
PAGE 3.13
3.7 STRING METHODS
The Java API java.lang.String class defines methods that can be invoked on String objects. We will experiment with
only a small number of these methods.
E x p e r i m e n t 2 StringTest.java
Step 1: To experiment with these methods, create a new program file called StringTest.java similar to
HelloWorld.java . Declare the class and the main method. Inside the main method, create a J Frame frame object, and
using an input dialog box, prompt the user for a word, saving the input in the variable String word .
Compile the code and run the program to be sure it runs as expected. Record the results.
All methods have a method header, which tells the user how to use the method. The method header consists of a return
type and a name followed by a set of parentheses surrounding an optional list of variables called parameters. The
parameter list tells the user the number and types of arguments that must be passed to the method when it is called ( or
invoked ). We will look at these String methods with headers:
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
String
Invoking the method toUpperCase() on a String word
"Java"
does not change the existing String , rather, it creates a
new String . Therefore, word remains unchanged.
String
"JAVA"
Step 3: To change word to its upper-case equivalent, the returned String needs to be assigned to word or to some other
String variable.
Replace the statement X String
word
"Java"
PAGE 3.14
J A V A L A B M A N U A L
word.toUpperCase();
with the statement
word = word.toUpperCase(); String
that assigns the returned String to word . "JAVA"
Compile the revised code and run the program. Record the results
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
S t e p 4 : If we only want to print word in upper case letters, then another option is to invoke toUpperCase on word in
the showMessageDialog method.
Remove the statement.
word = word.toUpperCase();
and change the statement.
JOptionPane.showMessageDialog(frame, "You entered " + word);
to
JOptionPane.showMessageDialog(frame, "You entered " + word.toUpperCase());
Compile the revised code and run the program. Record the results.
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
Compile and run the revised program, entering your full name. Record the two printed messages.
________________________________________________________________________________________________
________________________________________________________________________________________________
PAGE 3.15
Every character in a String has an index, or position in the String . The index of the first character is 0, and the index of
the last character is always one less than the length of the String.
int indexOf (String s): returns an integer representing the index of the first occurrence of the argument s in
this String.
M a r q u e t t e
0 1 2 3 4 5 6 7 8
index of e is _____________________
index of tt is _____________________
index of Mar is ___________________
index of m is _____________________
Compile and run the revised program, entering "Marquette" . Correct your predictions if necessary.
char charAt(int index): An integer argument representing an index into this String , must be passed to the
method. The character at index is returned.
S t e p 7 : Without removing any statements, add the statement
JOptionPane.showMessageDialog(frame,
word + "\n" +
"Char at index 1 is " + word.charAt(1) + "\n" +
"Char at index 3 is " + word.charAt(3) + "\n" +
"Char at index 8 is " + word.charAt(8));
as the last statement in main . Predict the output in the last message dialog box if "Marquette" is entered. Then
compile and run the revised program and correct your predictions if necessary.
char at index 1 is _____________________
char at index 3 is _____________________
char at index 8 is _____________________
Run the program one more time. This time enter "Warriors" when prompted for a word. The program will have a
runtime error, causing an Exception to be thrown and the program to end. If you close the StringTest windows, you will
see the Exception printed on the black System command window.
Record the essence of the error and explain why the error occurred.
________________________________________________________________________________________________
________________________________________________________________________________________________
PAGE 3.16
J A V A L A B M A N U A L
________________________________________________________________________________________________
________________________________________________________________________________________________
________________________________________________________________________________________________
String substring (int beginIndex, int endIndex): Two integer arguments representing indices into
this String must be passed to the method. A substring of this String , beginning with the character at beginIndex and up
to, but not including the character at endIndex is returned.
String substring (int beginIndex): One integer argument representing an index into this String must be
passed to the method. A substring of this String , beginning with the character at beginIndex and going to the end of
this String is returned.
M a r q u e t t e
0 1 2 3 4 5 6 7 8
as the last statement in main . Predict the output of the last message dialog if the entered string is "Marquette" .
Then, compile and run the revised program and correct your predictions if necessary.
PAGE 3.17
Overloaded methods are at least two methods in the same class that have the same name.
Answer this question: How does the computer know which of the two substring methods to execute?
________________________________________________________________________________________________
________________________________________________________________________________________________
S t e p 9 : Add a comment to this file that contains your name and the purpose of the program.
Here are three samples, the first two use a block comment and the third uses multiple inline comments.
/***************************************************
* Author: Stu Dent
* Class: COSC060 – Section 1001
* Purpose: Investigate different String methods
***************************************************/
Be sure that the final versions of these two programs are stored on your memory device in the lab03 directory.
PAGE 3.18
J A V A L A B M A N U A L
2. Write a program Pattern.java that prompts the user for a four-letter word using an input dialog. Then, print the
following pattern with the word using the substring method and string concatenation.
For example: If the user enters the word "Java", your program should print one of the following in a message dialog,
A. J B. J
Ja Ja
Jav Jav
Java Java
Jav Jav
Ja Ja
J J
3. Use String methods to write a program called Name.java that prompts the user for his First Middle Last names in
one input dialog. That is, a string such as "Thomas Patrick Jones" will be entered. Use a message dialog box to print the
name Last, First Middle Initial.
Therefore, the string "Jones, Thomas P." would be printed in a message dialog.
4. Use String methods to write a program called Jumble.java that prompts the user for his First Last names in one
input dialog. That is, a string such as "Thomas Jones" will be entered.
Use a message dialog box to print the first and last names with the first letters interchanged.
Therefore, the String " Jhomas Tones" would be printed in a message dialog.
6. Use String methods to write a program called TitleCase.java that prompts the user for his First Last names in one
input dialog. That is, a string such as "THOMAS jones" could be entered. Use a message dialog to print the name in
title case, i.e. first letters of each name are capitalized, all other letters are in lower case. Therefore, the String "
Thomas Jomes" would be printed in a message dialog.
Note: The String class contains the method String toLowerCase() which returns the lower-case equivalent of the
String on which it is invoked.
7. Use String methods to write a program Reverse.java that prompts the user for a four-letter word using an input
dialog. Use a message dialog to print the word in reverse order.
For example, if the user enters the word "Java", your program should print.
avaJ
Hint: Use the charAt method and string concatenation.
Begin with the empty string "" and concatenate characters onto it.
PAGE 3.19
9. Write a Java application, Testing.java , that tests whether the following are legal Java expressions. You should
determine this by trying to print each of the following.
Write up your answer by showing your test code.
And include a written explanation of what is wrong with any of the illegal expressions.
Explain the result of any of the legal expressions.
a. toUpperCase("Java");
b. "Java".substring()
d. "Java".Length()
e. "Java".charAt(4)
f. "Java".charAt(1, 2)
10. In 3.6, we used the escape character '\n'. The additional escape characters, used for printing, are:
\r is used to print a return, which returns the carriage to the beginning of the same line
\n is used to print a newline, which returns the carriage to the beginning of the next line
Write a Java application, Escape.java , that prints this sentence in a message dialog box!
PAGE 3.20