For Loops: Mastering Repetition in Java
Code ááᯠáĄááźáááşááźáááş áááşááŤáááşá፠run ááťááşáááş loops áá˝áą ááŻáśá¸ááááşá For loop á áĄááŻáśá¸ááťáŹá¸ááŻáśá¸ loop type ááźá áşááźáŽá¸ patterns, arrays, counting ááŻááşáááŻáˇ perfect ááŤá
đŻ áááş áááşáá°áááˇáş áĄááŹááťáŹá¸
áᎠlesson áážáŹ áááş áááşáá°áááˇáş áĄááŹááťáŹá¸:
- Loop áááŻáᏠááŹáá˛á ááŹááźáąáŹááˇáş áááŻáĄááşáá˛
- For loop áá˛áˇ syntax áá˛áˇ components (initialization, condition, increment)
- Counting loops - numbers áá˝áą ááąáá˝ááşááźááşá¸
- Arrays áá˛áˇ for loops áá˝áą áá˝á˛ááŻáśá¸ááźááşá¸
- Nested for loops - loop áá˛áážáŹ loop
- Patterns áá˛áˇ multiplication tables áá˝á˛ááźááşá¸
- Enhanced for loop (for-each loop)
- Common mistakes áá˛áˇ best practices
đ Loops áááŻáᏠááŹáá˛?
Loop áááŻáᏠcode block áá áşááŻááᯠáĄááźáááşááźáááş áááşááá˛áᲠexecute ááŻááşáááŻááşáá˛áˇ programming construct ááŤá áá°ááŽáá˛áˇ code ááᯠáĄááźáááşááťáŹá¸ááťáŹá¸ copy-paste ááŻááşá áᏠááááŻááąáŹáˇáá°á¸á
ááąáˇá ááşáááážáŹ áĽáááŹááťáŹá¸:
- 1 áááą 100 áĄáá ááąáá˝ááşááźááşá¸
- Student á áŹáááşá¸ 50 ááąáŹááş print ááźááşá¸
- Multiplication table (á áŹá¸áá˝á˛) áá˝á˛ááźááşá¸
- Pattern áá˝áą áá˝á˛ááźááşá¸ (stars, pyramids)
- Array/List áá˛á items áá˝áą ááŻááşááźááˇáşááźááşá¸
Loop áááŻáśá¸áááş code á áĄáááşá¸áážááşáá˝áŹá¸áááş!
Without Loop (BAD!)
System.out.println("Hello 1");
System.out.println("Hello 2");
System.out.println("Hello 3");
System.out.println("Hello 4");
System.out.println("Hello 5");
// 100 times áááŻáááş?? đą
With For Loop (GOOD!)
for (int i = 1; i <= 100; i++) {
System.out.println("Hello " + i);
}
// Clean, efficient, scalable! â¨
đš For Loop Syntax
For loop áá˛áˇ basic structure:
for (initialization; condition; increment/decrement) {
// Loop body - áᎠcode á áááşááŤáááşá፠run áááş
statements;
}
Three Components (ááŻáśá¸áááŻááşá¸):
- Initialization: Loop variable ááᯠááá áá áşááźáááş set ááŻááşáááş (áá áşááŤáᲠrun)
- Condition: Loop áááş run áááŹá¸ á á áşáááş (áĄá áááą áĄááŻáśá¸ áĄááźáááşáááŻááşá¸ á á áşáááş)
- Increment/Decrement: Loop variable ááᯠupdate ááŻááşáááş (iteration áá áşáᯠááźáŽá¸áááŻááşá¸)
Flow Chart
1. Initialization â i = 1
2. Condition check â i <= 5? (Yes)
3. Execute body â Print
4. Increment â i++
5. Condition check â i <= 5? (Yes)
6. Execute body â Print
7. Increment â i++
... repeat until condition is false
đš Simple Example: Count 1 to 10
1 áááą 10 áĄáá ááąáá˝ááşááźááşá¸:
public class CountToTen {
public static void main(String[] args) {
System.out.println("Counting from 1 to 10:");
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
System.out.println("Done!");
}
}
Counting from 1 to 10: 1 2 3 4 5 6 7 8 9 10 Done!
Step by Step:
int i = 1â i ááᯠ1 áážáˇ á áááş (initialization)i <= 10â i á 10 áááş áááşá¸ááŹá¸ áá°ááŹá¸ á á áşáááş (condition)i++â i ááᯠáá áşáᯠáááŻá¸áááş (increment)- i = 11 ááźá áşááąáŹáˇ condition false ááźá áşááźáŽá¸ loop áááşáááş
đš Increment & Decrement Variations
Counting Up (áĄáááŻá¸ááąáá˝ááşááźááşá¸)
// By 1: 1, 2, 3, 4, 5
for (int i = 1; i <= 5; i++) {
System.out.print(i + " ");
}
// By 2: 0, 2, 4, 6, 8, 10
for (int i = 0; i <= 10; i += 2) {
System.out.print(i + " ");
}
// By 5: 5, 10, 15, 20, 25
for (int i = 5; i <= 25; i += 5) {
System.out.print(i + " ");
}
Counting Down (áĄáááşá¸ááąáá˝ááşááźááşá¸)
// Countdown: 10, 9, 8, ..., 1, 0
for (int i = 10; i >= 0; i--) {
System.out.print(i + " ");
if (i == 0) {
System.out.println("Blast off! đ");
}
}
10 9 8 7 6 5 4 3 2 1 0 Blast off! đ
đš Practical Example: Sum of Numbers
1 áááą 100 áĄáá ááąáŤááşá¸ááźááşá¸:
public class SumNumbers {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum = sum + i; // or sum += i
}
System.out.println("Sum of 1 to 100 = " + sum);
}
}
Sum of 1 to 100 = 5050
How it works:
Iteration 1: sum = 0 + 1 = 1
Iteration 2: sum = 1 + 2 = 3
Iteration 3: sum = 3 + 3 = 6
Iteration 4: sum = 6 + 4 = 10
...
Iteration 100: sum = 4950 + 100 = 5050
đš Arrays with For Loops
For loop á array elements áá˝áąááᯠaccess ááŻááşáááŻáˇ perfect:
public class ArrayLoop {
public static void main(String[] args) {
String[] cities = {"Yangon", "Mandalay", "Naypyidaw", "Bago", "Mawlamyine"};
System.out.println("Cities in Myanmar:");
// Using index
for (int i = 0; i < cities.length; i++) {
System.out.println((i + 1) + ". " + cities[i]);
}
System.out.println("\nTotal cities: " + cities.length);
}
}
Cities in Myanmar: 1. Yangon 2. Mandalay 3. Naypyidaw 4. Bago 5. Mawlamyine Total cities: 5
â ď¸ Array Index:
- Arrays á 0 áááą á áááş: index 0, 1, 2, 3, 4
- Last index =
length - 1 - Condition:
i < cities.length(not <=)< /li> i <= cities.lengtháááŻáááş ArrayIndexOutOfBoundsException ááááş
đš Enhanced For Loop (For-Each)
Array/Collection items áá˝áąááᯠáááŻáá˝ááşáĄáąáŹááş loop ááŻááşáááŻáˇ:
// Traditional for loop
for (int i = 0; i < cities.length; i++) {
System.out.println(cities[i]);
}
// Enhanced for loop (for-each)
for (String city : cities) {
System.out.println(city);
}
Example: Calculate Average
public class AverageScore {
public static void main(String[] args) {
int[] scores = {85, 92, 78, 90, 88};
int sum = 0;
// Using enhanced for loop
for (int score : scores) {
sum += score;
}
double average = (double) sum / scores.length;
System.out.println("Total scores: " + sum);
System.out.println("Average: " + average);
}
}
Total scores: 433 Average: 86.6
For-Each Loop:
- Syntax:
for (type variable : array) - Index ááááŻáá˛áˇáĄá፠ááŻáśá¸áááş
- Code á áááŻáážááşá¸áááşá¸áááş
- Modification ááŻááşáááŻáˇ áááá°á¸ (read-only)
- Forward direction áᲠloop ááŻááşáááş
đš Nested For Loops (Loop áá˛áážáŹ Loop)
Loop áá áşááŻáá˛áážáŹ ááąáŹááş loop áá áşáᯠáááˇáşááźááşá¸:
Example 1: Multiplication Table
public class MultiplicationTable {
public static void main(String[] args) {
System.out.println("=== Multiplication Table (5x5) ===\n");
// Outer loop: rows
for (int i = 1; i <= 5; i++) {
// Inner loop: columns
for (int j = 1; j <= 5; j++) {
System.out.print((i * j) + "\t");
}
System.out.println(); // New line after each row
}
}
}
=== Multiplication Table (5x5) === 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 5 10 15 20 25
Example 2: Star Patterns
public class StarPatterns {
public static void main(String[] args) {
int rows = 5;
System.out.println("Pattern 1: Right Triangle");
for (int i = 1; i <= rows; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("* ");
}
System.out.println();
}
System.out.println("\nPattern 2: Inverted Triangle");
for (int i = rows; i >= 1; i--) {
for (int j = 1; j <= i; j++) {
System.out.print("* ");
}
System.out.println();
}
}
}
Pattern 1: Right Triangle * * * * * * * * * * * * * * * Pattern 2: Inverted Triangle * * * * * * * * * * * * * * *
Nested Loop áĄááŻááşááŻááşááŻáś:
- Outer loop á áá áşááźáááş run áááŻááşá¸ inner loop á áĄááźááˇáş run áááş
- Outer loop iteration 1 â Inner loop 1-5 ááźáááş
- Outer loop iteration 2 â Inner loop 1-5 ááźáááş
- Total iterations = outer Ă inner (5 Ă 5 = 25)
đť Complete Example: Grade Analyzer
Students ááťáŹá¸á scores ááťáŹá¸ááᯠanalyze ááŻááşááźááşá¸:
public class GradeAnalyzer {
public static void main(String[] args) {
String[] students = {"Aung Aung", "Su Su", "Ko Ko", "Mya Mya", "Zaw Zaw"};
int[] scores = {85, 92, 78, 95, 88};
System.out.println("=== Grade Analysis Report ===\n");
// Display individual grades
System.out.println("Student Grades:");
for (int i = 0; i < students.length; i++) {
String grade;
if (scores[i] >= 90) {
grade = "A";
} else if (scores[i] >= 80) {
grade = "B";
} else if (scores[i] >= 70) {
grade = "C";
} else {
grade = "F";
}
System.out.println((i + 1) + ". " + students[i] + ": " +
scores[i] + " â Grade " + grade);
}
// Calculate statistics
int total = 0;
int highest = scores[0];
int lowest = scores[0];
String topStudent = students[0];
for (int i = 0; i < scores.length; i++) {
total += scores[i];
if (scores[i] > highest) {
highest = scores[i];
topStudent = students[i];
}
if (scores[i] < lowest) {
lowest = scores[i];
}
}
double average = (double) total / scores.length;
System.out.println("\n=== Statistics ===");
System.out.println("Total Students: " + students.length);
System.out.println("Average Score: " + average);
System.out.println("Highest Score: " + highest + " (" + topStudent + ")");
System.out.println("Lowest Score: " + lowest);
// Count grades
int countA = 0, countB = 0, countC = 0, countF = 0;
for (int score : scores) {
if (score >= 90) countA++;
else if (score >= 80) countB++;
else if (score >= 70) countC++;
else countF++;
}
System.out.println("\n=== Grade Distribution ===");
System.out.println("A: " + countA + " students");
System.out.println("B: " + countB + " students");
System.out.println("C: " + countC + " students");
System.out.println("F: " + countF + " students");
}
}
=== Grade Analysis Report === Student Grades: 1. Aung Aung: 85 â Grade B 2. Su Su: 92 â Grade A 3. Ko Ko: 78 â Grade C 4. Mya Mya: 95 â Grade A 5. Zaw Zaw: 88 â Grade B === Statistics === Total Students: 5 Average Score: 87.6 Highest Score: 95 (Mya Mya) Lowest Score: 78 === Grade Distribution === A: 2 students B: 2 students C: 1 students F: 0 students
đš Common Mistakes & Best Practices
â Mistake 1: Infinite Loop
// Infinite loop - i never changes!
for (int i = 0; i < 10; ) { // Missing increment
System.out.println(i);
}
// Infinite loop - wrong increment
for (int i = 10; i > 0; i++) { // i increases instead of decreasing
System.out.println(i);
}
â Mistake 2: Off-by-One Error
int[] arr = {1, 2, 3, 4, 5};
// ArrayIndexOutOfBoundsException!
for (int i = 0; i <= arr.length; i++) { // Should be i < arr.length
System.out.println(arr[i]);
}
â Best Practices
- Variable naming: i, j, k ááŻáśá¸áááş (short loops áĄáá˝ááş), meaningful names ááŻáśá¸á፠(index, count)
- Array loops:
i < array.lengthááŻáśá¸á፠(not <=)< /li> - Avoid modification: Loop variable ááᯠloop body áá˛áážáŹ áááźáąáŹááşá¸ááŤáá˛áˇ
- Use for-each: Index ááááŻáááş for-each ááŻáśá¸á፠(cleaner)
- Nested loops: 2-3 levels áĄáááá˛á ááťáŹá¸áá˝ááşá¸áááş code áážáŻááşáááş
- Break early: áááŻáĄááşáááş break ááŻáśá¸ááźáŽá¸ loop áááą áá˝ááşááŤ
đŻ áĄááá áážááşááŹá¸ááááˇáş áĄááťááşááťáŹá¸
- For loop: Code ááᯠáĄááźáááşááźáááş run áááŻáˇ áĄááŻáśá¸ááźáŻáááş
- Syntax: for (initialization; condition; increment) { }
- Three parts: initialization, condition check, increment/decrement
- Arrays:
i < array.lengthááŻáśá¸á፠(0-based indexing) - Enhanced for: for (type var : array) - cleaner, read-only
- Nested loops: Loop áá˛áážáŹ loop - patterns, tables áĄáá˝ááş
- Increment: i++, i+=2, i+=5 á ááŹáá˝áą ááŻáśá¸áááŻáˇááááş
- Decrement: i-- ááŻáśá¸ááźáŽá¸ countdown ááŻááşáááŻáˇááááş
- Infinite loop: Increment/condition ááážááşáááş infinite loop ááźá áşáááŻááşáááş
- Break: Loop áááą áá˝ááşáááŻáˇ break ááŻáśá¸áááş
- Continue: Current iteration skip ááŻááşááźáŽá¸ next iteration áá˝áŹá¸áááş
âď¸ Practice Exercise
Exercise: Fibonacci Sequence
Fibonacci sequence áá˛áˇ ááá 10 terms ááᯠprint ááŻááşááŤ:
- Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
- Formula: next = previous1 + previous2
- Start with 0 and 1
Expected Output: 0 1 1 2 3 5 8 13 21 34
đĄ Solution ááźááˇáşáááş (Try ááŻááşááźáŽá¸ááž ááźááˇáşááŤ)
public class FibonacciSequence {
public static void main(String[] args) {
int n = 10; // Number of terms
int first = 0, second = 1;
System.out.println("First " + n + " Fibonacci numbers:");
for (int i = 1; i <= n; i++) {
System.out.print(first + " ");
// Calculate next term
int next = first + second;
// Update for next iteration
first = second;
second = next;
}
System.out.println();
}
}
đ Quick Quiz
Question 1: áᎠloop á áááşáážá áşááźáááş run ááá˛?
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
Question 2: Array length = 10 áááŻáááş correct loop condition á ááŹáá˛?
Question 3: Enhanced for loop (for-each) ááᯠáááşáĄááťáááşááŻáśá¸áááˇáşáá˛?