Espresso: A Concentrated Introduction to Java

# Laboratory: Loops

Summary: In today's laboratory, you will ground your understanding of loops in a few short examples.

Contents

## Exercises

### Exercise 0: Preparation

For this lab (and, possibly, for every subsequent lab), you should continue to use the project `Code`.

a. Start Eclipse.

b. Create the package `username.loops` within the `Code` project. You should use that package for this laboratory.

### Exercise 1: Counting

a. Write a main class, `SimpleCounter`, that prints the numbers from 1 to 10 using a for loop.

b. Write a main class, `EvenCounter`, that prints the even numbers from 0 to 20 using a for loop.

c. Write a main class, `DownCounter`, that prints the numbers from 10 to 1 using a for loop.

### Exercise 2: Counting, Revisited

a. Write a main class, `Counter`, that prompts the user for three integers -- a starting value, an ending value, and an increment -- and then prints all integers starting with the starting value and ending just before or at the ending value. For example,

```This program counts for you.
Please enter the starting value: 5
Please enter the ending value: 10
Please enter the increment: 1
5 6 7 8 9 10
```

Similarly,

```This program counts for you.
Please enter the starting value: 5
Please enter the ending value: 12
Please enter the increment: 3
5 8 11
```

I would recommend that you use your `username.util.IO` to read integers.

You may assume that the increment is positive.

### Exercise 3: Repetitive Prompting

One typical simple use of loops is to validate input from the user. For example, we might want to repeatedly ask for a password until the password is guessed, or we might want to ask for a color until the user enters a color (instead of something that we could not consder a color, like "Textbook").

a. Write a main class that repeatedly asks the user for a day of the week until the user enters something acceptable. You may choose the meaning of the word acceptable, but you should minimally accept Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, and Sunday. You might also accept abbreviations, such as mon or M.

b. Put the code for prompting into method called `readDay` in a utility class called `Prompter`. The `readDay` method will probably need at least two parameters: a `BufferedReader` to read input and a `PrintWriter` to print prompts. The `readDay` method should return a string, preferably one of the seven full names of week days.

c. Rewrite your class from step a to use `readDay`. For example,

```String day = Prompter.readDay(eyes,pen);
pen.println("It appears that you have entered the day " + day);
```

### Exercise 4: Getting Numeric Input

In exercise 2, you wrote a program that prompts the user for three numbers. Unfortunately, it is likely that your program will behave poorly (e.g., crash) if the user enters something other than a number (or even something that the user might think of as a number, but that computers do not, such as `Two`).

a. Determine what happens if the user enters erroneous input.

b. Suggest how you might solve this problem. (You should not write code; simply describe the code you might write.)

## History

Tuesday, 22 February 2005 [Samuel A. Rebelsky]

• Created.

Wednesday, 21 September 2005 [Samuel A. Rebelsky]

• Minor cleanup.

Sunday, 25 September 2005 [Samuel A. Rebelsky]

• Further cleanup.

Tuesday, 14 February 2006 [Samuel A. Rebelsky]

• Updates for switch to Eclipse.
• Removed dependency on the Exceptions reading.
• Updated last problem to ask for design, rather than code.

This page was generated by Siteweaver on Thu Mar 30 15:24:39 2006.
The source to the page was last modified on Tue Feb 14 10:23:32 2006.
This page may be found at `http://www.cs.grinnell.edu/~rebelsky/Espresso/Labs/loops.html`.

You may wish to validate this page's HTML ; ; Check with Bobby

Samuel A. Rebelsky
rebelsky@grinnell.edu