Control Flow
Loop Patterns
Common Iteration Techniques
A countdown timer needs to go 10, 9, 8... 1, 0. A report processes every 5th record for sampling. A game loop runs until the player quits. Each scenario uses a different loop pattern.
Count up (1 to 10)
The most basic loop pattern - counting from start to end.
public class CountUp {
public static void main(String[] args) {
int start = 1;
int end = 10;
System.out.println("Counting from " + start + " to " + end + ":");
for (int i = start; i <= end; i++) {
System.out.println(i);
}
// Practical: sum numbers in range
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("Sum of 1-100: " + sum);
}
}
public class CountUp {
public static void main(String[] args) {
int start = 0;
int end = 10;
System.out.println("Counting from " + start + " to " + end + ":");
for (int i = start; i <= end; i++) {
System.out.println(i);
}
// Practical: sum numbers in range
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("Sum of 1-100: " + sum);
}
}
public class CountUp {
public static void main(String[] args) {
int start = 5;
int end = 10;
System.out.println("Counting from " + start + " to " + end + ":");
for (int i = start; i <= end; i++) {
System.out.println(i);
}
// Practical: sum numbers in range
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("Sum of 1-100: " + sum);
}
}
public class CountUp {
public static void main(String[] args) {
int start = 1;
int end = 5;
System.out.println("Counting from " + start + " to " + end + ":");
for (int i = start; i <= end; i++) {
System.out.println(i);
}
// Practical: sum numbers in range
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("Sum of 1-100: " + sum);
}
}
public class CountUp {
public static void main(String[] args) {
int start = 1;
int end = 20;
System.out.println("Counting from " + start + " to " + end + ":");
for (int i = start; i <= end; i++) {
System.out.println(i);
}
// Practical: sum numbers in range
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("Sum of 1-100: " + sum);
}
}
start ← 1, end ← 10
1public class CountUp {2 public static void main(String[] args) {3 int start→ 1 = 1; //@start=5, 04 int end→ 10 = 10; //@end=5, 205 6 System.out.println("Counting from " + start1 + " to " + end10 + ":");7 for (int i = start; i <= end; i++) {outputCounting from 1 to 10:for (int i = start; i <= end; i++)
pass 1 of 106System.out.println("Counting from " + start + " to " + end + ":");7for (int i1 = start; i <= end10; i++) {8 System.out.println(i1);9}output1All 10 passes — pass 1 is the card above pass i1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 sum ← 0
11// Practical: sum numbers in range12int sum→ 0 = 0;13for (int i = 1; i <= 100; i++) {sum ← 1
pass 1 of 10012int sum = 0;13for (int i1 = 1; i <= 100; i++) {14 sum→ 1 += i1;15}100 passes — pass 1 is the card above pass isum1 1 0 → 1 2 2 1 → 3 3 3 3 → 6 4 4 6 → 10 5 5 10 → 15 6 6 15 → 21 7 7 21 → 28 8 8 28 → 36 9 9 36 → 45 ⋯ 89 more passes ⋯ 99 99 4851 → 4950 100 100 4950 → 5050 System.out.println("Sum of 1-100: " + sum);
15 }16 System.out.println("Sum of 1-100: " + sum5050);17}outputSum of 1-100: 5050
start ← 0, end ← 10
1public class CountUp {2 public static void main(String[] args) {3 int start→ 0 = 0;4 int end→ 10 = 10;5 6 System.out.println("Counting from " + start0 + " to " + end10 + ":");7 for (int i = start; i <= end; i++) {outputCounting from 0 to 10:for (int i = start; i <= end; i++)
pass 1 of 116System.out.println("Counting from " + start + " to " + end + ":");7for (int i0 = start; i <= end10; i++) {8 System.out.println(i0);9}output0All 11 passes — pass 1 is the card above pass i1 0 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 sum ← 0
11// Practical: sum numbers in range12int sum→ 0 = 0;13for (int i = 1; i <= 100; i++) {sum ← 1
pass 1 of 10012int sum = 0;13for (int i1 = 1; i <= 100; i++) {14 sum→ 1 += i1;15}100 passes — pass 1 is the card above pass isum1 1 0 → 1 2 2 1 → 3 3 3 3 → 6 4 4 6 → 10 5 5 10 → 15 6 6 15 → 21 7 7 21 → 28 8 8 28 → 36 9 9 36 → 45 ⋯ 89 more passes ⋯ 99 99 4851 → 4950 100 100 4950 → 5050 System.out.println("Sum of 1-100: " + sum);
15 }16 System.out.println("Sum of 1-100: " + sum5050);17}outputSum of 1-100: 5050
start ← 5, end ← 10
1public class CountUp {2 public static void main(String[] args) {3 int start→ 5 = 5;4 int end→ 10 = 10;5 6 System.out.println("Counting from " + start5 + " to " + end10 + ":");7 for (int i = start; i <= end; i++) {outputCounting from 5 to 10:for (int i = start; i <= end; i++)
pass 1 of 66System.out.println("Counting from " + start + " to " + end + ":");7for (int i5 = start; i <= end10; i++) {8 System.out.println(i5);9}output5All 6 passes — pass 1 is the card above pass i1 5 2 6 3 7 4 8 5 9 6 10 sum ← 0
11// Practical: sum numbers in range12int sum→ 0 = 0;13for (int i = 1; i <= 100; i++) {sum ← 1
pass 1 of 10012int sum = 0;13for (int i1 = 1; i <= 100; i++) {14 sum→ 1 += i1;15}100 passes — pass 1 is the card above pass isum1 1 0 → 1 2 2 1 → 3 3 3 3 → 6 4 4 6 → 10 5 5 10 → 15 6 6 15 → 21 7 7 21 → 28 8 8 28 → 36 9 9 36 → 45 ⋯ 89 more passes ⋯ 99 99 4851 → 4950 100 100 4950 → 5050 System.out.println("Sum of 1-100: " + sum);
15 }16 System.out.println("Sum of 1-100: " + sum5050);17}outputSum of 1-100: 5050
start ← 1, end ← 5
1public class CountUp {2 public static void main(String[] args) {3 int start→ 1 = 1;4 int end→ 5 = 5;5 6 System.out.println("Counting from " + start1 + " to " + end5 + ":");7 for (int i = start; i <= end; i++) {outputCounting from 1 to 5:for (int i = start; i <= end; i++)
pass 1 of 56System.out.println("Counting from " + start + " to " + end + ":");7for (int i1 = start; i <= end5; i++) {8 System.out.println(i1);9}output1All 5 passes — pass 1 is the card above pass i1 1 2 2 3 3 4 4 5 5 sum ← 0
11// Practical: sum numbers in range12int sum→ 0 = 0;13for (int i = 1; i <= 100; i++) {sum ← 1
pass 1 of 10012int sum = 0;13for (int i1 = 1; i <= 100; i++) {14 sum→ 1 += i1;15}100 passes — pass 1 is the card above pass isum1 1 0 → 1 2 2 1 → 3 3 3 3 → 6 4 4 6 → 10 5 5 10 → 15 6 6 15 → 21 7 7 21 → 28 8 8 28 → 36 9 9 36 → 45 ⋯ 89 more passes ⋯ 99 99 4851 → 4950 100 100 4950 → 5050 System.out.println("Sum of 1-100: " + sum);
15 }16 System.out.println("Sum of 1-100: " + sum5050);17}outputSum of 1-100: 5050
start ← 1, end ← 20
1public class CountUp {2 public static void main(String[] args) {3 int start→ 1 = 1;4 int end→ 20 = 20;5 6 System.out.println("Counting from " + start1 + " to " + end20 + ":");7 for (int i = start; i <= end; i++) {outputCounting from 1 to 20:for (int i = start; i <= end; i++)
pass 1 of 206System.out.println("Counting from " + start + " to " + end + ":");7for (int i1 = start; i <= end20; i++) {8 System.out.println(i1);9}output120 passes — pass 1 is the card above pass i1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 ⋯ 9 more passes ⋯ 19 19 20 20 sum ← 0
11// Practical: sum numbers in range12int sum→ 0 = 0;13for (int i = 1; i <= 100; i++) {sum ← 1
pass 1 of 10012int sum = 0;13for (int i1 = 1; i <= 100; i++) {14 sum→ 1 += i1;15}100 passes — pass 1 is the card above pass isum1 1 0 → 1 2 2 1 → 3 3 3 3 → 6 4 4 6 → 10 5 5 10 → 15 6 6 15 → 21 7 7 21 → 28 8 8 28 → 36 9 9 36 → 45 ⋯ 89 more passes ⋯ 99 99 4851 → 4950 100 100 4950 → 5050 System.out.println("Sum of 1-100: " + sum);
15 }16 System.out.println("Sum of 1-100: " + sum5050);17}outputSum of 1-100: 5050
The classic counting loop. Change the bounds to count any range.
Count down (countdown timer)
Looping in reverse order - start high, go low.
public class CountDown {
public static void main(String[] args) {
int start = 10;
System.out.println("Countdown from " + start + ":");
for (int i = start; i >= 1; i--) {
System.out.println(i);
}
System.out.println("Liftoff!");
// Practical: reverse array traversal
int[] arr = {10, 20, 30, 40, 50};
System.out.println("\nArray in reverse:");
for (int i = arr.length - 1; i >= 0; i--) {
System.out.println("Index " + i + ": " + arr[i]);
}
}
}
public class CountDown {
public static void main(String[] args) {
int start = 3;
System.out.println("Countdown from " + start + ":");
for (int i = start; i >= 1; i--) {
System.out.println(i);
}
System.out.println("Liftoff!");
// Practical: reverse array traversal
int[] arr = {10, 20, 30, 40, 50};
System.out.println("\nArray in reverse:");
for (int i = arr.length - 1; i >= 0; i--) {
System.out.println("Index " + i + ": " + arr[i]);
}
}
}
public class CountDown {
public static void main(String[] args) {
int start = 5;
System.out.println("Countdown from " + start + ":");
for (int i = start; i >= 1; i--) {
System.out.println(i);
}
System.out.println("Liftoff!");
// Practical: reverse array traversal
int[] arr = {10, 20, 30, 40, 50};
System.out.println("\nArray in reverse:");
for (int i = arr.length - 1; i >= 0; i--) {
System.out.println("Index " + i + ": " + arr[i]);
}
}
}
start ← 10
1public class CountDown {2 public static void main(String[] args) {3 int start→ 10 = 10; //@start=5, 34 5 System.out.println("Countdown from " + start10 + ":");6 for (int i = start; i >= 1; i--) {outputCountdown from 10:for (int i = start; i >= 1; i--)
pass 1 of 105System.out.println("Countdown from " + start + ":");6for (int i10 = start; i >= 1; i--) {7 System.out.println(i10);8}output10All 10 passes — pass 1 is the card above pass i1 10 2 9 3 8 4 7 5 6 6 5 7 4 8 3 9 2 10 1 int[] arr = {10, 20, 30, 40, 50};
8}9System.out.println("Liftoff!");1011// Practical: reverse array traversal12int[] arr = {10, 20, 30, 40, 50};13System.out.println("\nArray in reverse:");14for (int i = arr.length - 1; i >= 0; i--) {outputLiftoff! Array in reverse:for (int i = arr.length - 1; i >= 0; i--)
pass 1 of 513System.out.println("\nArray in reverse:");14for (int i4 = arr.length5 - 1; i >= 0; i--) {15 System.out.println("Index " + i4 + ": " + arr[i]50);16}outputIndex 4: 50All 5 passes — pass 1 is the card above pass iarr[i]1 4 50 2 3 40 3 2 30 4 1 20 5 0 10
start ← 3
1public class CountDown {2 public static void main(String[] args) {3 int start→ 3 = 3;4 5 System.out.println("Countdown from " + start3 + ":");6 for (int i = start; i >= 1; i--) {outputCountdown from 3:for (int i = start; i >= 1; i--)
pass 1 of 35System.out.println("Countdown from " + start + ":");6for (int i3 = start; i >= 1; i--) {7 System.out.println(i3);8}output3All 3 passes — pass 1 is the card above pass i1 3 2 2 3 1 int[] arr = {10, 20, 30, 40, 50};
8}9System.out.println("Liftoff!");1011// Practical: reverse array traversal12int[] arr = {10, 20, 30, 40, 50};13System.out.println("\nArray in reverse:");14for (int i = arr.length - 1; i >= 0; i--) {outputLiftoff! Array in reverse:for (int i = arr.length - 1; i >= 0; i--)
pass 1 of 513System.out.println("\nArray in reverse:");14for (int i4 = arr.length5 - 1; i >= 0; i--) {15 System.out.println("Index " + i4 + ": " + arr[i]50);16}outputIndex 4: 50All 5 passes — pass 1 is the card above pass iarr[i]1 4 50 2 3 40 3 2 30 4 1 20 5 0 10
start ← 5
1public class CountDown {2 public static void main(String[] args) {3 int start→ 5 = 5;4 5 System.out.println("Countdown from " + start5 + ":");6 for (int i = start; i >= 1; i--) {outputCountdown from 5:for (int i = start; i >= 1; i--)
pass 1 of 55System.out.println("Countdown from " + start + ":");6for (int i5 = start; i >= 1; i--) {7 System.out.println(i5);8}output5All 5 passes — pass 1 is the card above pass i1 5 2 4 3 3 4 2 5 1 int[] arr = {10, 20, 30, 40, 50};
8}9System.out.println("Liftoff!");1011// Practical: reverse array traversal12int[] arr = {10, 20, 30, 40, 50};13System.out.println("\nArray in reverse:");14for (int i = arr.length - 1; i >= 0; i--) {outputLiftoff! Array in reverse:for (int i = arr.length - 1; i >= 0; i--)
pass 1 of 513System.out.println("\nArray in reverse:");14for (int i4 = arr.length5 - 1; i >= 0; i--) {15 System.out.println("Index " + i4 + ": " + arr[i]50);16}outputIndex 4: 50All 5 passes — pass 1 is the card above pass iarr[i]1 4 50 2 3 40 3 2 30 4 1 20 5 0 10
Decrement with i-- and check i >= end to count backwards.
Step by N (every nth element)
Skip elements by incrementing by more than 1.
public class StepByN {
public static void main(String[] args) {
int step = 5;
// Count by step
System.out.println("Counting by " + step + ":");
for (int i = 0; i <= 50; i += step) {
System.out.println(i);
}
// Practical: process every other element
String[] names = {"Alice", "Bob", "Charlie", "Diana", "Eve", "Frank"};
System.out.println("\nEvery other name:");
for (int i = 0; i < names.length; i += 2) {
System.out.println(names[i]);
}
// Odd numbers only
System.out.println("\nOdd numbers 1-20:");
for (int i = 1; i <= 20; i += 2) {
System.out.print(i + " ");
}
System.out.println();
}
}
public class StepByN {
public static void main(String[] args) {
int step = 2;
// Count by step
System.out.println("Counting by " + step + ":");
for (int i = 0; i <= 50; i += step) {
System.out.println(i);
}
// Practical: process every other element
String[] names = {"Alice", "Bob", "Charlie", "Diana", "Eve", "Frank"};
System.out.println("\nEvery other name:");
for (int i = 0; i < names.length; i += 2) {
System.out.println(names[i]);
}
// Odd numbers only
System.out.println("\nOdd numbers 1-20:");
for (int i = 1; i <= 20; i += 2) {
System.out.print(i + " ");
}
System.out.println();
}
}
public class StepByN {
public static void main(String[] args) {
int step = 10;
// Count by step
System.out.println("Counting by " + step + ":");
for (int i = 0; i <= 50; i += step) {
System.out.println(i);
}
// Practical: process every other element
String[] names = {"Alice", "Bob", "Charlie", "Diana", "Eve", "Frank"};
System.out.println("\nEvery other name:");
for (int i = 0; i < names.length; i += 2) {
System.out.println(names[i]);
}
// Odd numbers only
System.out.println("\nOdd numbers 1-20:");
for (int i = 1; i <= 20; i += 2) {
System.out.print(i + " ");
}
System.out.println();
}
}
step ← 5
1public class StepByN {2 public static void main(String[] args) {3 int step→ 5 = 5; //@step=2, 104 5 // Count by step6 System.out.println("Counting by " + step5 + ":");7 for (int i = 0; i <= 50; i += step) {outputCounting by 5:for (int i = 0; i <= 50; i += step)
pass 1 of 116System.out.println("Counting by " + step + ":");7for (int i0 = 0; i <= 50; i += step5) {8 System.out.println(i0);9}output0All 11 passes — pass 1 is the card above pass i1 0 2 5 3 10 4 15 5 20 6 25 7 30 8 35 9 40 10 45 11 50 String[] names = {"Alice", "Bob", "Charlie", "Diana", "Eve", "Frank"};
11// Practical: process every other element12String[] names = {"Alice", "Bob", "Charlie", "Diana", "Eve", "Frank"};13System.out.println("\nEvery other name:");14for (int i = 0; i < names.length; i += 2) {output Every other name:for (int i = 0; i < names.length; i += 2)
pass 1 of 313System.out.println("\nEvery other name:");14for (int i0 = 0; i < names.length6; i += 2) {15 System.out.println(names[i]Alice);16}outputAliceAll 3 passes — pass 1 is the card above pass inames[i]1 0 Alice 2 2 Charlie 3 4 Eve System.out.println(" Odd numbers 1-20:");
18// Odd numbers only19System.out.println("\nOdd numbers 1-20:");20for (int i = 1; i <= 20; i += 2) {output Odd numbers 1-20:for (int i = 1; i <= 20; i += 2)
pass 1 of 1019System.out.println("\nOdd numbers 1-20:");20for (int i1 = 1; i <= 20; i += 2) {21 System.out.print(i1 + " ");22}output1All 10 passes — pass 1 is the card above pass i1 1 2 3 3 5 4 7 5 9 6 11 7 13 8 15 9 17 10 19 System.out.println();
22 }23 System.out.println();24}
step ← 2
1public class StepByN {2 public static void main(String[] args) {3 int step→ 2 = 2;4 5 // Count by step6 System.out.println("Counting by " + step2 + ":");7 for (int i = 0; i <= 50; i += step) {outputCounting by 2:for (int i = 0; i <= 50; i += step)
pass 1 of 266System.out.println("Counting by " + step + ":");7for (int i0 = 0; i <= 50; i += step2) {8 System.out.println(i0);9}output026 passes — pass 1 is the card above pass i1 0 2 2 3 4 4 6 5 8 6 10 7 12 8 14 9 16 ⋯ 15 more passes ⋯ 25 48 26 50 String[] names = {"Alice", "Bob", "Charlie", "Diana", "Eve", "Frank"};
11// Practical: process every other element12String[] names = {"Alice", "Bob", "Charlie", "Diana", "Eve", "Frank"};13System.out.println("\nEvery other name:");14for (int i = 0; i < names.length; i += 2) {output Every other name:for (int i = 0; i < names.length; i += 2)
pass 1 of 313System.out.println("\nEvery other name:");14for (int i0 = 0; i < names.length6; i += 2) {15 System.out.println(names[i]Alice);16}outputAliceAll 3 passes — pass 1 is the card above pass inames[i]1 0 Alice 2 2 Charlie 3 4 Eve System.out.println(" Odd numbers 1-20:");
18// Odd numbers only19System.out.println("\nOdd numbers 1-20:");20for (int i = 1; i <= 20; i += 2) {output Odd numbers 1-20:for (int i = 1; i <= 20; i += 2)
pass 1 of 1019System.out.println("\nOdd numbers 1-20:");20for (int i1 = 1; i <= 20; i += 2) {21 System.out.print(i1 + " ");22}output1All 10 passes — pass 1 is the card above pass i1 1 2 3 3 5 4 7 5 9 6 11 7 13 8 15 9 17 10 19 System.out.println();
22 }23 System.out.println();24}
step ← 10
1public class StepByN {2 public static void main(String[] args) {3 int step→ 10 = 10;4 5 // Count by step6 System.out.println("Counting by " + step10 + ":");7 for (int i = 0; i <= 50; i += step) {outputCounting by 10:for (int i = 0; i <= 50; i += step)
pass 1 of 66System.out.println("Counting by " + step + ":");7for (int i0 = 0; i <= 50; i += step10) {8 System.out.println(i0);9}output0All 6 passes — pass 1 is the card above pass i1 0 2 10 3 20 4 30 5 40 6 50 String[] names = {"Alice", "Bob", "Charlie", "Diana", "Eve", "Frank"};
11// Practical: process every other element12String[] names = {"Alice", "Bob", "Charlie", "Diana", "Eve", "Frank"};13System.out.println("\nEvery other name:");14for (int i = 0; i < names.length; i += 2) {output Every other name:for (int i = 0; i < names.length; i += 2)
pass 1 of 313System.out.println("\nEvery other name:");14for (int i0 = 0; i < names.length6; i += 2) {15 System.out.println(names[i]Alice);16}outputAliceAll 3 passes — pass 1 is the card above pass inames[i]1 0 Alice 2 2 Charlie 3 4 Eve System.out.println(" Odd numbers 1-20:");
18// Odd numbers only19System.out.println("\nOdd numbers 1-20:");20for (int i = 1; i <= 20; i += 2) {output Odd numbers 1-20:for (int i = 1; i <= 20; i += 2)
pass 1 of 1019System.out.println("\nOdd numbers 1-20:");20for (int i1 = 1; i <= 20; i += 2) {21 System.out.print(i1 + " ");22}output1All 10 passes — pass 1 is the card above pass i1 1 2 3 3 5 4 7 5 9 6 11 7 13 8 15 9 17 10 19 System.out.println();
22 }23 System.out.println();24}
Change the step size to process every 2nd, 5th, or nth element.
While with condition
Loop until some condition becomes false.
public class WhileCondition {
public static void main(String[] args) {
// Guessing game simulation
int secret = 7;
int guess = 1;
int attempts = 0;
while (guess != secret) {
System.out.println("Trying " + guess + "... wrong!");
guess++;
attempts++;
}
System.out.println("Found " + secret + " in " + attempts + " attempts!");
// Practical: process until sentinel value
int[] data = {10, 20, 30, -1, 40, 50}; // -1 is sentinel
int i = 0;
int sum = 0;
System.out.println("\nSum until -1:");
while (i < data.length && data[i] != -1) {
sum += data[i];
i++;
}
System.out.println("Sum: " + sum);
}
}
public class WhileCondition {
public static void main(String[] args) {
// Guessing game simulation
int secret = 3;
int guess = 1;
int attempts = 0;
while (guess != secret) {
System.out.println("Trying " + guess + "... wrong!");
guess++;
attempts++;
}
System.out.println("Found " + secret + " in " + attempts + " attempts!");
// Practical: process until sentinel value
int[] data = {10, 20, 30, -1, 40, 50}; // -1 is sentinel
int i = 0;
int sum = 0;
System.out.println("\nSum until -1:");
while (i < data.length && data[i] != -1) {
sum += data[i];
i++;
}
System.out.println("Sum: " + sum);
}
}
public class WhileCondition {
public static void main(String[] args) {
// Guessing game simulation
int secret = 9;
int guess = 1;
int attempts = 0;
while (guess != secret) {
System.out.println("Trying " + guess + "... wrong!");
guess++;
attempts++;
}
System.out.println("Found " + secret + " in " + attempts + " attempts!");
// Practical: process until sentinel value
int[] data = {10, 20, 30, -1, 40, 50}; // -1 is sentinel
int i = 0;
int sum = 0;
System.out.println("\nSum until -1:");
while (i < data.length && data[i] != -1) {
sum += data[i];
i++;
}
System.out.println("Sum: " + sum);
}
}
secret ← 7, guess ← 1, attempts ← 0
1public class WhileCondition {2 public static void main(String[] args) {3 // Guessing game simulation4 int secret→ 7 = 7; //@secret=3, 95 int guess→ 1 = 1;6 int attempts→ 0 = 0;guess ← 2, attempts ← 1
pass 1 of 68while (guess1 != secret7) { //#?while_condition9 System.out.println("Trying " + guess1 + "... wrong!");10 guess→ 2++;11 attempts→ 1++;12}outputTrying 1... wrong!All 6 passes — pass 1 is the card above pass guessattempts1 1 → 2 0 → 1 2 2 → 3 1 → 2 3 3 → 4 2 → 3 4 4 → 5 3 → 4 5 5 → 6 4 → 5 6 6 → 7 5 → 6 i ← 0, sum ← 0
12}13System.out.println("Found " + secret7 + " in " + attempts6 + " attempts!");1415// Practical: process until sentinel value16int[] data = {10, 20, 30, -1, 40, 50}; // -1 is sentinel17int i→ 0 = 0;18int sum→ 0 = 0;1920System.out.println("\nSum until -1:");21while (i < data.length && data[i] != -1) {outputFound 7 in 6 attempts! Sum until -1:sum ← 10, i ← 1
pass 1 of 320System.out.println("\nSum until -1:");21while (i0 < data.length6 && data[i]10 != -1) {22 sum→ 10 += data[i]10;23 i→ 1++;24}All 3 passes — pass 1 is the card above pass data[i]sumi1 10 0 → 10 0 → 1 2 20 10 → 30 1 → 2 3 30 30 → 60 2 → 3 System.out.println("Sum: " + sum);
24}25System.out.println("Sum: " + sum60);outputSum: 60
secret ← 3, guess ← 1, attempts ← 0
1public class WhileCondition {2 public static void main(String[] args) {3 // Guessing game simulation4 int secret→ 3 = 3;5 int guess→ 1 = 1;6 int attempts→ 0 = 0;guess ← 2, attempts ← 1
pass 1 of 28while (guess1 != secret3) {9 System.out.println("Trying " + guess1 + "... wrong!");10 guess→ 2++;11 attempts→ 1++;12}outputTrying 1... wrong!guess ← 3, attempts ← 2
pass 2 of 28while (guess2 != secret3) {9 System.out.println("Trying " + guess2 + "... wrong!");10 guess→ 3++;11 attempts→ 2++;12}outputTrying 2... wrong!i ← 0, sum ← 0
12}13System.out.println("Found " + secret3 + " in " + attempts2 + " attempts!");1415// Practical: process until sentinel value16int[] data = {10, 20, 30, -1, 40, 50}; // -1 is sentinel17int i→ 0 = 0;18int sum→ 0 = 0;1920System.out.println("\nSum until -1:");21while (i < data.length && data[i] != -1) {outputFound 3 in 2 attempts! Sum until -1:sum ← 10, i ← 1
pass 1 of 320System.out.println("\nSum until -1:");21while (i0 < data.length6 && data[i]10 != -1) {22 sum→ 10 += data[i]10;23 i→ 1++;24}All 3 passes — pass 1 is the card above pass data[i]sumi1 10 0 → 10 0 → 1 2 20 10 → 30 1 → 2 3 30 30 → 60 2 → 3 System.out.println("Sum: " + sum);
24}25System.out.println("Sum: " + sum60);outputSum: 60
secret ← 9, guess ← 1, attempts ← 0
1public class WhileCondition {2 public static void main(String[] args) {3 // Guessing game simulation4 int secret→ 9 = 9;5 int guess→ 1 = 1;6 int attempts→ 0 = 0;guess ← 2, attempts ← 1
pass 1 of 88while (guess1 != secret9) {9 System.out.println("Trying " + guess1 + "... wrong!");10 guess→ 2++;11 attempts→ 1++;12}outputTrying 1... wrong!All 8 passes — pass 1 is the card above pass guessattempts1 1 → 2 0 → 1 2 2 → 3 1 → 2 3 3 → 4 2 → 3 4 4 → 5 3 → 4 5 5 → 6 4 → 5 6 6 → 7 5 → 6 7 7 → 8 6 → 7 8 8 → 9 7 → 8 i ← 0, sum ← 0
12}13System.out.println("Found " + secret9 + " in " + attempts8 + " attempts!");1415// Practical: process until sentinel value16int[] data = {10, 20, 30, -1, 40, 50}; // -1 is sentinel17int i→ 0 = 0;18int sum→ 0 = 0;1920System.out.println("\nSum until -1:");21while (i < data.length && data[i] != -1) {outputFound 9 in 8 attempts! Sum until -1:sum ← 10, i ← 1
pass 1 of 320System.out.println("\nSum until -1:");21while (i0 < data.length6 && data[i]10 != -1) {22 sum→ 10 += data[i]10;23 i→ 1++;24}All 3 passes — pass 1 is the card above pass data[i]sumi1 10 0 → 10 0 → 1 2 20 10 → 30 1 → 2 3 30 30 → 60 2 → 3 System.out.println("Sum: " + sum);
24}25System.out.println("Sum: " + sum60);outputSum: 60
Use while when you don't know how many iterations ahead of time.
Do-while (always runs once)
Sometimes you need to run the body at least once before checking.
public class DoWhile {
public static void main(String[] args) {
// Menu that shows at least once
int choice = 0;
do {
System.out.println("=== Menu ===");
System.out.println("1. Play");
System.out.println("2. Settings");
System.out.println("3. Exit");
System.out.println("Choice: " + choice);
// Simulate getting input
choice = 3;
} while (choice != 3);
System.out.println("Goodbye!");
// Difference: while vs do-while when condition is false
boolean runLoop = false;
System.out.println("\n=== while (runLoop=false) ===");
while (runLoop) {
System.out.println("This never prints");
}
System.out.println("while skipped entirely");
System.out.println("\n=== do-while (runLoop=false) ===");
do {
System.out.println("This prints once!");
} while (runLoop);
System.out.println("do-while executed once");
}
}
choice ← 0
1public class DoWhile {2 public static void main(String[] args) {3 // Menu that shows at least once4 int choice→ 0 = 0;choice ← 3
6do {7 System.out.println("=== Menu ===");8 System.out.println("1. Play");9 System.out.println("2. Settings");10 System.out.println("3. Exit");11 System.out.println("Choice: " + choice0);12 13 // Simulate getting input14 choice→ 3 = 3; //#?simulate_input15} while (choice != 3);output=== Menu === 1. Play 2. Settings 3. Exit Choice: 0runLoop ← false
17System.out.println("Goodbye!");1819// Difference: while vs do-while when condition is false20boolean runLoop→ false = false;2122System.out.println("\n=== while (runLoop=false) ===");23while (runLoop) {24 System.out.println("This never prints");25}26System.out.println("while skipped entirely");2728System.out.println("\n=== do-while (runLoop=false) ===");29do {outputGoodbye! === while (runLoop=false) === while skipped entirely === do-while (runLoop=false) ===do
28System.out.println("\n=== do-while (runLoop=false) ===");29do {30 System.out.println("This prints once!");31} while (runLoop);outputThis prints once!System.out.println("do-while executed once");
31} while (runLoop);32System.out.println("do-while executed once");outputdo-while executed once
do-while runs the body first, then checks the condition.
Exercise: InfinitePatterns.java
Explore intentional infinite loops and how to use them safely