lec4
lec4
Programs
1
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;
2
Increment and decrement
shortcuts to increase or decrease a variable's value
by 1
int x = 2;
x++; // x = x + 1; (or x += 1;
)
// x now stores 3
double gpa = 2.5;
gpa--; // gpa -= 1;
// gpa now stores 1.5
3
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"
5
Initialization
for (int i = 1; i <= 6; i++) {
System.out.println(i + " squared = " + (i * i));
}
6
Test
for (int i = 1; i <= 6; i++) {
System.out.println(i + " squared = " + (i * i));
}
7
Update
for (int i = 1; i <= 6; i++) {
System.out.println(i + " squared = " + (i * i));
}
8
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
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
Multi-line loop body
Output:
+----+
\ /
/ \
\ /
/ \
\ /
/ \
+----+
System.out.println("+----+");
for (int i = 1; i <= 3; i++) {
System.out.println("\\ /");
System.out.println("/ \\");
}
System.out.println("+----+");
11
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
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
Counting down
The update can use -- to make the loop count down.
Be sure to use the right test (> or >= instead of <
or <=)
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
Where are we
Done: many basic features of Java
Static methods
int, double, and strings
Expressions: +, -, *, /, %, <, <=, >, >=
Variables
For loops
System.out.println and System.out.print
15
Mapping loops to numbers
for (int count = 1; count <= 5; count++) {
...
}
16
Loop tables
What statement in the body would cause the loop to
print:
2 7 12 17 22
19
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
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
Output:
**********
**********
**********
**********
**********
********** 22
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
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
Complex lines
What nested for loops produce the following
output?
eated characters on each line)
....1
...2
..3 outer loop (loops 5 times because there ar
.4
5
25
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
Nested for loop exercise
Make a table to represent any patterns on each
line.
line # of -1 * line -1 * line + 5
....1 dots -1 4
...2 1 4 -2 3
..3 2 3 -3 2
.4 3 2 -4 1
5
4 1 -5 0
5 0
Output:
....1
...2
..3
.4
5
28
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
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
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