You should complete this lab by 11:59p on Tuesday, 10 January 2006 (but hopefully you'll finish it during class!), with the partner I've assigned to you.
To get started, create a directory called lab2
. Feel
free to go back and peek at lab #1 if you
need to jog your memory on how to do so. Also, create a file
lab2.txt
in that directory, and put your names in it.
You'll put your answers to the "in words" exercises into that
file.
Click on the file Simple.java
and save it to your
"lab2" directory as "Simple.java". The parts of the program are
labeled. Take a minute to look at the program to figure out what it
will do once we run it. As we discussed in class, this program needs
to be compiled into bytecode before it can be run. (As far as the
computer is concerned, at this point it might as well be a poem.) To
compile this program, type:
javac Simple.java
The program should compile without returning any messages. (Any messages you see are errors.) If you do get errors, get help from from the instructor or the prefector.
Once you've compiled the program successfully, do an
ls
. You should see a new file in the directory, named
Simple.class
. This is the "executable" (bytecode) file
that you will run. To run the program, type:
java Simple
Notice that you do not include the .class
extension
when you run a Java program.
EXERCISE 1: Modify the program so that it prints
out "Cold enough for ya, [your name] and [your partner's name]?".
(You'll have to open the file with NEdit, make a change, rerun
javac Simple.java
, and rerun java
Simple
.)
Most Java programs look pretty similar. They all have the following format:
Simple.java
does not contain any data, but it does
contain one method. That method is called main
. The
main
method is a special method in Java; it is always the
one that the computer looks for to see how to run your program. The
main
method in Simple.java
performs only one
simple action: it prints out a (pretty inane) comment to the screen.
Next you'll look at a program that does something just a shade more
complicated.
Now download the file SimpleWithVariable.java
into your lab2
directory.
SimpleWithVariable.java
is very similar to
Simple.java
; the difference is that
SimpleWithVariable.java
uses data. The line that starts
with String
is our data line. This line is an example of
a variable declaration, which is a fancy way of saying the
following: here's some data that we will use; it's a String (of
characters—the name should evoke a string of beads, or maybe a
string of Alphabits), its name is "message", and its value is "It
could be worse; we could be in Duluth."
EXERCISE 2: Modify the message that the program
writes out to the screen in SimpleWithVariable.java
by
changing the value of the variable.
The programs we've seen so far contain "output" statements, because they each write something to the screen. There are several ways to do output in Java; we're just going to look at one today.
The output of these programs is what we call "console output",
because data is printed out to the console (another name for the
terminal or xterm). In order to do console output, we use one of
Java's many built-in classes. (One of the nice things about Java is
that—in addition to writing our own classes—we can use
other classes in our programs, either ones that we wrote previously,
or ones that Java provides.) This class is the System
class. The System
class contains attributes and methods
for doing various things, such as writing out data and errors to the
console, exiting a program, etc. The System
class
contains an object named out
, which knows how to write to
the console. (What are these objects of which we're speaking? Stay
tuned!) Finally, println()
is a method (action)
associated with the out
object. So,
System.out.println("hello!")
is how we indicate that we
want to write out something to the console.
Just as there are several ways to output data in Java, there are also several ways to input data to Java. We'll look at one input method today, too.
Save SimpleWithInput.java
to
your lab2
directory. Compile and run the program. What
do you see this time?
Now look at the program in NEdit. You should notice several
differences between this program and the previous program. First, the
first line is new: we are "importing" all of the classes in the
java.util
package. (A "package" in Java is a set of
related classes that are pre-written for us.) The
java.util
package contains "utility" classes that are
useful to many types of programs, such as a random-number generator
and classes that deal with groupings of items. The class that we're
using here is the Scanner
class, which handles getting
input from the user in various ways (console, file, etc.). Second, we
have two more variables that we've declared. These variables will
store whatever the user types in to the console window (in this case,
your name and your partner's name). Third, we have a statement that
contains the word new
. Statements that contain the word
new
are used to create objects. Here, we're creating an
object from the Scanner
class. In most cases, we need to
create an object before we can use it; we create a
Scanner
object, name it "input", and use this object to
read in data from the console that the user has typed in. (This whole
"new" discussion should be a little mysterious right now, but we'll
talk about this more in class very soon. Hang in there!)
EXERCISE 3: Make the following changes to the code:
name2
to age
,
and change its type from String
to int
.System.out.println("Enter your age: ");
age =
input.nextInt();
"Well, I hope that 65
winters have prepared you well for this weather, Joan
Baez!"
Compile and run the program.
EXERCISE 4: What happens if you enter a number
when prompted for your name and a name when prompted for your age? If
you get a message, what did the message say? In
words, explain what you might do as a programmer to prevent a
user from entering incorrect input. (I'm not looking for an exact
answer, just a general idea as to the approach you'd take.) Put your
answer in lab2.txt
.
Exercise 5: Modify
SimpleWithInput.java
again so that it asks for the names
of you and your partner and both of your ages, and taunts both users
about their ages (you choose the taunts) on two separate lines. Save
this program as SimpleWithMoreInputs.java
.
Exercise 6: Go back to Simple.java
,
and replace System.out.println(...)
with
System.out.print(...)
. What is the difference between
the println()
and print()
methods? Describe
the difference in lab2.txt
.
Exercise 7: Modify
SimpleWithMoreInputs.java
by doing the following:
input.next()
to get input from the user, and sometimes
we use input.nextInt()
. Based on what you observed,
what is the difference between input.next()
and
input.nextInt()
? Put your answer in
lab2.txt
.Submit your answers to these seven exercises via hsp
.
(Note: you can submit entire directories using hsp
, so it
may be easiest to submit your entire "lab2" directory.) Answers to the
questions should be in a text file named "lab2.txt". You should work
on and submit the answers together with your partner. Only one of you
should submit your lab with hsp
, but make sure that you
indicate in the lab2.txt
both of your names.
Instructions for using hsp
are here.
Authored originally by Amy Csizmar Dalal. Modified by Dave Musicant and David Liben-Nowell.