Building Java Programs, 4th edition

Lab: For loops

Except where otherwise noted, the contents of this document are Copyright 2013 Stuart Reges and Marty Stepp.

lab document created by Marty Stepp, Stuart Reges and Whitaker Brand

Lab goals

Goals for this problem set:

for loops

A for loop repeats a group of statements a given number of times.

for (initialization; test; update) {
    statement(s) to repeat;
}

Example:

for (int i = 1; i <= 10; i++) {
    System.out.println("We're number one!");
}

Exercise : Bottles of beer practice-it

Exercise : for loop table practice practice-it

Create a table of the number of stars on each line:

*******
*****
***
*
line stars
1
7
2
5
3
3
4
1

multiplier: How much does the # of stars change between lines? -2

shift: Given your multiplier, what must be added to get that many stars on line 1? 9

Test your loop expression in Practice-It! using the checkmark icon above. Use the form:

for (int stars = 1; stars <= multiplier * line + shift; stars++) {

Exercise : simple for loop practice-it

Exercise : Verify solution in Practice-It!

screenshot Our Practice-It! system lets you solve Java problems online.

Exercise : Sequence of numbers

Exercise : Sequence of characters

Exercise : What's the output? practice-it

What output is produced by the following Java program? Write the output in the box on the right side.

public class OddStuff {
    public static void main(String[] args) {
        int number = 32;
        for (int count = 1; count <= number; count++) {
            System.out.println(number);
            number = number / 2;
        }
    }
}

Output:

32
16
8
4

Exercise : Number lines, part 1 practice-it

Exercise : Number lines, part 2 practice-it

Exercise : Number lines, part 3 practice-it

Exercise : What's the output?

Exercise - answer

Exercise : What's the output?

Exercise - answer

Answer:

1	2	3	4	5	6	7	8	9	10
2	4	6	8	10	12	14	16	18	20
3	6	9	12	15	18	21	24	27	30
4	8	12	16	20	24	28	32	36	40
5	10	15	20	25	30	35	40	45	50
6	12	18	24	30	36	42	48	54	60
7	14	21	28	35	42	49	56	63	70
8	16	24	32	40	48	56	64	72	80
9	18	27	36	45	54	63	72	81	90
10	20	30	40	50	60	70	80	90	100

Exercise : printing a design practice-it

Write a program to produce the following output using nested for loops. Use a table to help you figure out the patterns of characters on each line.

-----1-----
----333----
---55555---
--7777777--
-999999999-
Line Dashes Numbers
1
5
1
2
4
3
3
3
5
4
2
7
5
1
9
dashes expression
-1
* line +
6
numbers expression
2
* line +
-1

Test your loop expressions in Practice-It! using the checkmark icon above. Use your expressions in the loop tests of the inner loops of your code.

Exercise : SlashFigure practice-it

Write a Java program in a class named SlashFigure to produce the following output with nested for loops. Use a loop table if necessary to figure out the expressions.

!!!!!!!!!!!!!!!!!!!!!!
\\!!!!!!!!!!!!!!!!!!//
\\\\!!!!!!!!!!!!!!////
\\\\\\!!!!!!!!!!//////
\\\\\\\\!!!!!!////////
\\\\\\\\\\!!//////////
Line \ ! /
1
0
22
0
2
2
18
2
3
4
14
4
4
6
10
6
5
8
6
8
6
10
2
10
multiplier
2
-4
2
shift
-2
26
-2

Test your code in Practice-It! or the Output Comparison Tool.

Class constants

A class constant is a global value that cannot be changed.

public static final type name = expression;

Example:

public static final int DAYS_PER_WEEK = 7;
public static final double TAX_RATE = 0.10;

for loop expressions w/ constant

When adding a class constant to a loop expression, it affects the constant that must be added in the expression. Suppose we have the two loop expressions below for figure sizes of 5 and 9. The third line of the table shows the general formula that would be used if we turned our figure's size into a constant named SIZE.

size expression relationship
5 8 * line + 16 16 = 3 * 5 + 1
9 8 * line + 28 28 = 3 * 9 + 1
SIZE 8 * line + (3 * SIZE + 1)

continued on the next slide ...

Exercise : for loop table w/ constant

You already found loop expressions for the slash figure at size 6. Now make a table at size 4 and use the two to generalize the loop expression in terms of a constant for the figure size.

!!!!!!!!!!!!!!
\\!!!!!!!!!!//
\\\\!!!!!!////
\\\\\\!!//////
Line \ ! /
1
0
14
0
2
2
10
2
3
4
6
4
4
6
2
6
\ and /
size 6  2 * line +
-2
size 4  2 * line +
-2
size SIZE  2 * line +
-2
!
size 6 -4 * line +
26
size 4 -4 * line +
18
size SIZE -4 * line + (
4
 * SIZE +
2
)

Exercise : SlashFigure2

Test your code in the Output Comparison Tool.

Exercise : jGRASP Debugger

continued on the next slide...

Exercise - jGRASP Debugger

continued on the next slide...

Exercise - jGRASP Debugger

Variable Scope

A variable's scope is the part of a program in which it exists. In Java, the scope of a variable starts when it is declared and ends when the closing curly brace for the block that contains it is reached. A variable is said to be in scope where it is accessible.

public class Example {
    public static void main(String[] args) {
        performTest();
    }
	
    public static void performTest() {
        int count = 12;
        for (int i = 1; i <= 12; i++) {
            runSample();
            System.out.print(count);   
        }
    }

    public static void runSample() {
	    System.out.print("sample");
    }
} 
In which of these two blocks is the variable count in scope?