Building Java Programs: Lecture 2-2: The For Loop
Building Java Programs: Lecture 2-2: The For Loop
Chapter 2
Lecture 2-2: The for Loop
reading: 2.3
self-check: 12-26
exercises: 2-14
videos: Ch. 2 #3
1
Copyright 2008 by Pearson Education
Increment and decrement
shortcuts to increase or decrease a variable's value by 1
int x = 2;
x++; // x = x + 1;
// x now stores 3
double gpa = 2.5;
gpa--; // gpa = gpa - 1;
// gpa now stores 1.5
2
Copyright 2008 by Pearson Education
Modify-and-assign operators
shortcuts to modify a variable's value
x += 3; // x = x + 3;
gpa -= 0.5; // gpa = gpa - 0.5;
number *= 2; // number = number * 2;
3
Copyright 2008 by Pearson Education
Repetition over a range
System.out.println("1 squared = " + 1 * 1);
System.out.println("2 squared = " + 2 * 2);
System.out.println("3 squared = " + 3 * 3);
System.out.println("4 squared = " + 4 * 4);
System.out.println("5 squared = " + 5 * 5);
System.out.println("6 squared = " + 6 * 6);
Intuition: "I want to print a line for each number from 1 to 6"
4
Copyright 2008 by Pearson Education
for loop syntax
for (initialization; test; update) { header
statement;
statement;
... body
statement;
}
5
Copyright 2008 by Pearson Education
Initialization
for (int i = 1; i <= 6; i++) {
System.out.println(i + " squared = " + (i * i));
}
6
Copyright 2008 by Pearson Education
Test
for (int i = 1; i <= 6; i++) {
System.out.println(i + " squared = " + (i * i));
}
7
Copyright 2008 by Pearson Education
Update
for (int i = 1; i <= 6; i++) {
System.out.println(i + " squared = " + (i * i));
}
8
Copyright 2008 by Pearson Education
Loop walkthrough
1 2 3
for (int i = 1; i <= 4; i++) {
4 System.out.println(i + " squared = " + (i * i));
}
5 System.out.println("Whoo!");
1
Output:
2
1 squared = 1
2 squared = 4
3 squared = 9 4
4 squared = 16
Whoo! 3
9
Copyright 2008 by Pearson Education
General repetition
System.out.println("I am so smart");
System.out.println("I am so smart");
System.out.println("I am so smart");
System.out.println("I am so smart");
System.out.println("I am so smart");
System.out.println("S-M-R-T");
System.out.println("I mean S-M-A-R-T");
10
Copyright 2008 by Pearson Education
Multi-line loop body
System.out.println("+----+");
for (int i = 1; i <= 3; i++) {
System.out.println("\\ /");
System.out.println("/ \\");
}
System.out.println("+----+");
Output:
+----+
\ /
/ \
\ /
/ \
\ /
/ \
+----+
11
Copyright 2008 by Pearson Education
Expressions for counter
int highTemp = 5;
for (int i = -3; i <= highTemp / 2; i++) {
System.out.println(i * 1.8 + 32);
}
Output:
26.6
28.4
30.2
32.0
33.8
35.6
12
Copyright 2008 by Pearson Education
System.out.print
Prints without moving to a new line
allows you to print partial messages on the same line
int highestTemp = 5;
for (int i = -3; i <= highestTemp / 2; i++) {
System.out.print((i * 1.8 + 32) + " ");
}
Output:
26.6 28.4 30.2 32.0 33.8 35.6
13
Copyright 2008 by Pearson Education
Counting down
The update can use -- to make the loop count down.
The test must say > instead of <
System.out.print("T-minus ");
for (int i = 10; i >= 1; i--) {
System.out.print(i + ", ");
}
System.out.println("blastoff!");
Output:
T-minus 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, blastoff!
14
Copyright 2008 by Pearson Education
Mapping loops to numbers
for (int count = 1; count <= 5; count++) {
...
}
15
Copyright 2008 by Pearson Education
Slope-intercept
for (int count = 1; count <= 5; count++) {
...
}
16
Copyright 2008 by Pearson Education
Loop tables
What statement in the body would cause the loop to print:
2 7 12 17 22
18
Copyright 2008 by Pearson Education
Nested loops
reading: 2.3
self-check: 22-26
exercises: 10-14
videos: Ch. 2 #4
19
Copyright 2008 by Pearson Education
Redundancy between loops
for (int j = 1; j <= 5; j++) {
System.out.print(j + "\t"); Output:
} 1 2 3 4 5
System.out.println();
2 4 6 8 10
for (int j = 1; j <= 5; j++) {
System.out.print(2 * j + "\t");
3 6 9 12 15
}
System.out.println();
4 8 12 16 20
for (int j = 1; j <= 5; j++) {
System.out.print(3 * j + "\t");
}
System.out.println();
for (int j = 1; j <= 5; j++) {
System.out.print(4 * j + "\t"){
}
System.out.println();
20
Copyright 2008 by Pearson Education
Nested loops
nested loop: A loop placed inside another loop.
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 5; j++) {
System.out.print((i * j) + "\t");
}
System.out.println(); // to end the line
}
Output:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
21
Copyright 2008 by Pearson Education
Nested for loop exercise
What is the output of the following nested for loops?
for (int i = 1; i <= 6; i++) {
for (int j = 1; j <= 10; j++) {
System.out.print("*");
}
System.out.println();
}
Output:
**********
**********
**********
**********
**********
**********
22
Copyright 2008 by Pearson Education
Nested for loop exercise
What is the output of the following nested for loops?
for (int i = 1; i <= 6; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
Output:
*
**
***
****
*****
******
23
Copyright 2008 by Pearson Education
Nested for loop exercise
What is the output of the following nested for loops?
for (int i = 1; i <= 6; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i);
}
System.out.println();
}
Output:
1
22
333
4444
55555
666666
24
Copyright 2008 by Pearson Education
Complex lines
What nested for loops produce the following output?
25
Copyright 2008 by Pearson Education
Outer and inner loop
First write the outer loop, from 1 to the number of lines.
for (int line = 1; line <= 5; line++) {
...
}
....1
...2
..3
.4
5
26
Copyright 2008 by Pearson Education
Nested for loop exercise
Make a table to represent any patterns on each line.
....1 line # of dots -1 * line -1 * line + 5
...2 1 4 -1 4
..3 2 3 -2 3
.4 3 2 -3 2
5
4 1 -4 1
5 0 -5 0
27
Copyright 2008 by Pearson Education
Nested for loop solution
Answer:
for (int line = 1; line <= 5; line++) {
for (int j = 1; j <= (-1 * line + 5); j++) {
System.out.print(".");
}
System.out.println(line);
}
Output:
....1
...2
..3
.4
5
28
Copyright 2008 by Pearson Education
Nested for loop exercise
What is the output of the following nested for loops?
for (int line = 1; line <= 5; line++) {
for (int j = 1; j <= (-1 * line + 5); j++) {
System.out.print(".");
}
for (int k = 1; k <= line; k++) {
System.out.print(line);
}
System.out.println();
}
Answer:
....1
...22
..333
.4444
55555
29
Copyright 2008 by Pearson Education
Nested for loop exercise
Modify the previous code to produce this output:
....1
...2.
..3..
.4...
5....
Answer:
for (int line = 1; line <= 5; line++) {
for (int j = 1; j <= (-1 * line + 5); j++) {
System.out.print(".");
}
System.out.print(line);
for (int j = 1; j <= (line - 1); j++) {
System.out.print(".");
}
System.out.println();
}
30
Copyright 2008 by Pearson Education
Common errors
Both of the following sets of code produce infinite loops:
for (int i = 1; i <= 10; i++) {
for (int j = 1; i <= 5; j++) {
System.out.print(j);
}
System.out.println();
}
31
Copyright 2008 by Pearson Education