Looping Statements in Java – Mastering Repetition and Flow Control

Table of contents
- Introduction
- Table of Contents
- 1. Introduction – Importance of repetition in programming
- 2. The for Loop – Syntax, structure, and real-world example
- 3. The while Loop – When condition matters more than count
- 4. The do-while Loop – Guaranteed first run explained
- 5. Choosing the Right Loop – for vs while vs do-while
- 6. Loop Control Statements
- 7. Nested Loops – Example: Multiplication table
- 8. Infinite Loops – while(true) and real use cases
- 9. Common Mistakes and Best Practices Checklist
- 10. Practical Program – Number Guessing Game with loops and break
- 11. Mini Challenge – FizzBuzz with continue
- 12. Conclusion – What you've learned + introduction to next post on Arrays

Introduction
Part 6 of the Complete Java Tutorial Series for Beginners
Welcome back to our Java journey! In our previous post, we mastered conditional statements like if, else, and switch – think of them as decision-making tools that help your program choose different paths, like deciding whether to take an umbrella based on the weather.
Today, we're diving into something equally powerful: loops. If conditionals are like making decisions, loops are like having a helpful assistant who can repeat tasks for you automatically. Imagine asking someone to count from 1 to 100, or to keep knocking on a door until someone answers – that's exactly what loops do in programming!
Table of Contents
Practical Program – Number Guessing Game with loops and break
Conclusion – What you've learned + introduction to next post on Arrays
1. Introduction – Importance of repetition in programming
Think about your daily routine: you brush your teeth, check your phone for messages, or count sheep when trying to sleep. Programming often requires similar repetitive tasks:
Displaying a menu until the user makes a valid choice
Processing each student's grade in a class of 50
Validating user input until they enter something correct
Calculating compound interest over multiple years
Without loops, you'd have to write the same code hundreds of times! Imagine writing:
System.out.println("Welcome to our store!");
System.out.println("Welcome to our store!");
System.out.println("Welcome to our store!");
// ... 97 more times for 100 customers
That's not just tedious – it's impractical and error-prone. Loops solve this by letting you write the instruction once and specify how many times (or under what conditions) to repeat it.
2. The for
Loop – Syntax, structure, and real-world example
The for
loop is like a smart counter. Think of it as hiring someone to do a task a specific number of times. You tell them: "Start counting at 1, keep going until you reach 10, and add 1 each time."
Basic Syntax
for (initialization; condition; increment/decrement) {
// Code to repeat
}
Let's break this down with a real example:
public class ForLoopExample {
public static void main(String[] args) {
// Print numbers 1 to 5
for (int i = 1; i <= 5; i++) {
System.out.println("Count: " + i);
}
System.out.println("Counting finished!");
}
}
Output:
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
Counting finished!
How it works:
Initialization (
int i = 1
): Create a counter variable and set its starting valueCondition (
i <= 5
): Before each repetition, check if we should continueIncrement (
i++
): After each repetition, update the counterBody: The code inside
{}
runs each time
Real-world analogy:
Think of a coffee shop serving customers. The barista (for loop) serves customers one by one:
Start with customer #1
Keep serving while there are customers in line
Move to the next customer after each order
public class CoffeeShop {
public static void main(String[] args) {
System.out.println("☕ Coffee Shop Opening!");
for (int customer = 1; customer <= 3; customer++) {
System.out.println("Serving customer #" + customer + " - Here's your coffee!");
}
System.out.println("All customers served. Shop closing! 🔒");
}
}
3. The while
Loop – When condition matters more than count
The while
loop is like giving someone instructions: "Keep doing this while a certain condition is true." You don't necessarily know how many times it'll repeat – it depends on when the condition becomes false.
Basic Syntax
while (condition) {
// Code to repeat
}
Example: Waiting for correct password
import java.util.Scanner;
public class WhileLoopExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String correctPassword = "java123";
String userInput = "";
// Keep asking while the password is wrong
while (!userInput.equals(correctPassword)) {
System.out.print("Enter password: ");
userInput = scanner.nextLine();
if (!userInput.equals(correctPassword)) {
System.out.println("❌ Wrong password! Try again.");
}
}
System.out.println("✅ Access granted! Welcome!");
scanner.close();
}
}
Real-world analogy:
Think of knocking on a friend's door. You keep knocking while no one answers. You don't know if it'll take 2 knocks or 20 knocks – you just keep going until someone opens the door (condition becomes false).
When to use while
:
User input validation (keep asking until valid)
Reading files (process while there's more data)
Game loops (keep playing while player hasn't quit)
Searching (look while item not found)
4. The do-while
Loop – Guaranteed first run explained
The do-while
loop is like saying: "Do this at least once, then check if you should continue." It's the only loop that guarantees the code runs at least one time.
Basic Syntax
do {
// Code to execute
} while (condition);
Example: Restaurant menu (always show menu at least once)
import java.util.Scanner;
public class DoWhileExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String choice;
do {
// Show menu (happens at least once)
System.out.println("\n🍕 Pizza Palace Menu:");
System.out.println("1. Margherita");
System.out.println("2. Pepperoni");
System.out.println("3. Exit");
System.out.print("Choose an option: ");
choice = scanner.nextLine();
switch (choice) {
case "1":
System.out.println("You ordered Margherita! 🍕");
break;
case "2":
System.out.println("You ordered Pepperoni! 🍕");
break;
case "3":
System.out.println("Thank you for visiting! 👋");
break;
default:
System.out.println("Invalid choice. Please try again.");
}
} while (!choice.equals("3"));
scanner.close();
}
}
Real-world analogy:
Think of trying a new restaurant. You'll definitely eat at least one meal (do), and then decide if you want to come back again (while condition).
Key difference from while
:
while
: Check condition first, might never rundo-while
: Run first, then check condition, always runs at least once
5. Choosing the Right Loop – for vs while vs do-while
Choosing the right loop is like choosing the right tool for the job. Here's your decision guide:
Use for when: | Use while when: | Use do-while when: |
You know exact number of repetitions | Condition-based repetition | Must execute at least once |
Counting/iterating through ranges | User input validation | Menu systems |
Processing arrays/collections | Reading files until end | Games (play at least one round) |
Mathematical sequences | Searching algorithms | Authentication prompts |
Quick Examples:
// FOR: Counting 1 to 10 (know exact count)
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
// WHILE: Keep reading until user says "stop"
while (!input.equals("stop")) {
input = scanner.nextLine();
}
// DO-WHILE: Show game menu at least once
do {
showGameMenu();
choice = getPlayerChoice();
} while (!choice.equals("quit"));
6. Loop Control Statements
Sometimes you need to change the flow of a loop – exit early, skip an iteration, or leave a method entirely. Java provides three powerful tools:
break
– Exit early with example
break
is like an emergency exit. It immediately stops the loop and jumps to the code after the loop.
public class BreakExample {
public static void main(String[] args) {
System.out.println("🔍 Looking for the number 7...");
for (int i = 1; i <= 10; i++) {
System.out.println("Checking number: " + i);
if (i == 7) {
System.out.println("✅ Found it! Breaking out of loop.");
break; // Exit the loop immediately
}
}
System.out.println("Search completed!");
}
}
Output:
🔍 Looking for the number 7...
Checking number: 1
Checking number: 2
Checking number: 3
Checking number: 4
Checking number: 5
Checking number: 6
Checking number: 7
✅ Found it! Breaking out of loop.
Search completed!
continue
– Skip iteration with example
continue
is like saying "skip this one and move to the next." It skips the rest of the current iteration and jumps to the next one.
public class ContinueExample {
public static void main(String[] args) {
System.out.println("🎯 Printing only even numbers from 1 to 10:");
for (int i = 1; i <= 10; i++) {
if (i % 2 != 0) { // If number is odd
continue; // Skip to next iteration
}
System.out.println("Even number: " + i);
}
}
}
Output:
🎯 Printing only even numbers from 1 to 10:
Even number: 2
Even number: 4
Even number: 6
Even number: 8
Even number: 10
return
– Exit method from inside loop
return
doesn't just exit the loop – it exits the entire method. Use this when you've found what you're looking for and want to stop everything.
public class ReturnExample {
public static void main(String[] args) {
findAndPrintSpecialNumber();
System.out.println("This line runs after the method returns.");
}
public static void findAndPrintSpecialNumber() {
for (int i = 1; i <= 100; i++) {
if (i == 42) {
System.out.println("🎉 Found the answer to everything: " + i);
return; // Exit the entire method
}
System.out.println("Searching... current number: " + i);
}
System.out.println("This line never executes because we return early!");
}
}
7. Nested Loops – Example: Multiplication table
Nested loops are loops inside other loops. Think of them like Russian dolls – one loop contains another loop. They're perfect for working with 2D structures like tables, grids, or matrices.
Example: Creating a multiplication table
public class MultiplicationTable {
public static void main(String[] args) {
System.out.println("📊 Multiplication Table (1-5):");
System.out.println(" 1 2 3 4 5");
System.out.println(" +-----------------");
// Outer loop: rows (1 to 5)
for (int row = 1; row <= 5; row++) {
System.out.print(row + " | "); // Row header
// Inner loop: columns (1 to 5)
for (int col = 1; col <= 5; col++) {
int result = row * col;
System.out.printf("%3d ", result); // Format with 3 spaces
}
System.out.println(); // New line after each row
}
}
}
Output:
📊 Multiplication Table (1-5):
1 2 3 4 5
+-----------------
1 | 1 2 3 4 5
2 | 2 4 6 8 10
3 | 3 6 9 12 15
4 | 4 8 12 16 20
5 | 5 10 15 20 25
How nested loops work:
Outer loop runs once
Inner loop runs completely for each outer loop iteration
When inner loop finishes, outer loop moves to next iteration
Process repeats
Real-world analogy:
Think of reading a book with chapters:
Outer loop: Go through each chapter (1, 2, 3...)
Inner loop: Read each page in the current chapter
You finish all pages in chapter 1 before moving to chapter 2
8. Infinite Loops – while(true)
and real use cases
An infinite loop runs forever (until something forces it to stop). While this might sound scary, infinite loops are actually very useful in real applications!
Basic infinite loop syntax:
while (true) {
// Code that runs forever (until break)
}
Real use case: Simple calculator
import java.util.Scanner;
public class SimpleCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("🧮 Simple Calculator (type 'quit' to exit)");
while (true) { // Infinite loop
System.out.print("Enter first number (or 'quit'): ");
String input1 = scanner.nextLine();
if (input1.equals("quit")) {
break; // Exit the infinite loop
}
System.out.print("Enter second number: ");
String input2 = scanner.nextLine();
try {
double num1 = Double.parseDouble(input1);
double num2 = Double.parseDouble(input2);
System.out.println("Result: " + num1 + " + " + num2 + " = " + (num1 + num2));
} catch (NumberFormatException e) {
System.out.println("❌ Please enter valid numbers!");
}
System.out.println(); // Blank line for readability
}
System.out.println("👋 Calculator closed!");
scanner.close();
}
}
When to use infinite loops:
Server applications (keep running until shutdown)
Game main loops (keep playing until quit)
Menu systems (show options until exit)
Real-time monitoring (keep checking sensors)
Safety tip:
Always have a clear exit condition with break
or return
to avoid truly infinite loops that crash your program!
9. Common Mistakes and Best Practices Checklist
❌ Common Mistakes:
Off-by-one errors:
// Wrong: Misses last element for (int i = 0; i < 10; i++) { /* Should be i <= 10 for 0-10 */ } // Correct: Includes all elements for (int i = 0; i <= 10; i++) { /* Includes 0 through 10 */ }
Infinite loops without exit:
// Dangerous: No way to exit while (true) { System.out.println("This runs forever!"); // Missing break condition! }
Forgetting to update loop variable:
// Wrong: i never changes, infinite loop int i = 0; while (i < 10) { System.out.println(i); // Missing: i++; }
Modifying loop variable inside the loop:
// Confusing and error-prone for (int i = 0; i < 10; i++) { i = i + 2; // Don't do this! System.out.println(i); }
✅ Best Practices Checklist:
Use meaningful variable names:
studentCount
instead ofi
Choose the right loop type based on your needs
Always have a clear exit condition for while loops
Keep loop bodies simple and readable
Use
break
andcontinue
sparingly and only when they make code clearerInitialize variables before the loop when needed
Test edge cases: What happens with 0 iterations? 1 iteration?
Comment complex nested loops to explain the logic
10. Practical Program – Number Guessing Game with loops and break
Let's build a fun Number Guessing Game that demonstrates multiple loop concepts:
import java.util.Scanner;
import java.util.Random;
public class NumberGuessingGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
boolean playAgain = true;
System.out.println("🎲 Welcome to the Number Guessing Game!");
while (playAgain) { // Outer game loop
int secretNumber = random.nextInt(100) + 1; // 1-100
int attempts = 0;
int maxAttempts = 7;
boolean hasGuessedCorrectly = false;
System.out.println("\n🎯 I'm thinking of a number between 1 and 100.");
System.out.println("You have " + maxAttempts + " attempts. Good luck!");
// Inner guessing loop
while (attempts < maxAttempts && !hasGuessedCorrectly) {
System.out.print("Attempt " + (attempts + 1) + "/" + maxAttempts + " - Enter your guess: ");
try {
int guess = Integer.parseInt(scanner.nextLine());
attempts++;
if (guess == secretNumber) {
System.out.println("🎉 Congratulations! You guessed it in " + attempts + " attempts!");
hasGuessedCorrectly = true;
break; // Exit guessing loop early
} else if (guess < secretNumber) {
System.out.println("📈 Too low! Try higher.");
} else {
System.out.println("📉 Too high! Try lower.");
}
// Give hints for remaining attempts
if (attempts < maxAttempts && !hasGuessedCorrectly) {
int remaining = maxAttempts - attempts;
System.out.println("(" + remaining + " attempts remaining)");
}
} catch (NumberFormatException e) {
System.out.println("❌ Please enter a valid number!");
}
}
// Game over check
if (!hasGuessedCorrectly) {
System.out.println("💔 Game over! The number was: " + secretNumber);
}
// Play again?
System.out.print("\n🔄 Play again? (yes/no): ");
String response = scanner.nextLine().toLowerCase();
playAgain = response.equals("yes") || response.equals("y");
}
System.out.println("👋 Thanks for playing! See you next time!");
scanner.close();
}
}
What this demonstrates:
Nested loops: Outer game loop, inner guessing loop
break
: Exit guessing loop when correctLoop conditions: Multiple conditions with
&&
Input validation: Try-catch for invalid numbers
Practical application: Real game that's fun to play!
11. Mini Challenge – FizzBuzz with continue
FizzBuzz is a classic programming challenge. Here's the rule:
Print numbers 1 to 30
If divisible by 3: print "Fizz" instead
If divisible by 5: print "Buzz" instead
If divisible by both 3 and 5: print "FizzBuzz" instead
Your challenge: Implement FizzBuzz using continue
Here's a solution that demonstrates continue
:
public class FizzBuzzChallenge {
public static void main(String[] args) {
System.out.println("🥤 FizzBuzz Challenge (1-30):");
for (int i = 1; i <= 30; i++) {
String output = "";
// Check for Fizz (divisible by 3)
if (i % 3 == 0) {
output += "Fizz";
}
// Check for Buzz (divisible by 5)
if (i % 5 == 0) {
output += "Buzz";
}
// If we have Fizz or Buzz, print it and continue to next iteration
if (!output.isEmpty()) {
System.out.println(i + ": " + output);
continue; // Skip the regular number printing
}
// Regular number (not divisible by 3 or 5)
System.out.println(i + ": " + i);
}
}
}
Sample Output:
🥤 FizzBuzz Challenge (1-30):
1: 1
2: 2
3: Fizz
4: 4
5: Buzz
6: Fizz
...
15: FizzBuzz
...
30: FizzBuzz
Try it yourself:
Can you modify this to work with different rules? Maybe "Ping" for divisible by 7?
12. Conclusion – What you've learned + introduction to next post on Arrays
Congratulations! 🎉 You've mastered one of the most powerful concepts in programming. Let's recap what you can now do:
✅ What You've Learned:
Three types of loops:
for
,while
, anddo-while
When to use each loop based on your specific needs
Loop control statements:
break
,continue
, andreturn
Nested loops for handling 2D problems
Infinite loops and their practical applications
Best practices to avoid common pitfalls
Real-world applications through practical examples
🚀 Your New Superpowers:
Automate repetitive tasks effortlessly
Process large amounts of data efficiently
Create interactive programs that keep running
Build games, calculators, and menu systems
Handle user input validation like a pro
🎯 Practice Suggestions:
Modify the guessing game: Add difficulty levels or scoring
Create a simple ATM menu using do-while loops
Build a grade calculator that processes multiple students
Make a pattern printer using nested loops (stars, pyramids)
📚 Coming Next: Java Operators – Building Blocks of Expressions
You’ve mastered how to control the flow of your program. Now it’s time to make your code think and calculate! In our next post, we’ll dive into Java Operators – the core tools for performing operations and making decisions.
Happy coding! 💻 Remember, the best way to learn loops is to practice them. Start with simple counting, then build up to more complex programs. Every expert programmer started exactly where you are now!
Have questions about loops or want to share your practice programs? Feel free to reach out – I love seeing what beginners create with these fundamental concepts!
Subscribe to my newsletter
Read articles from Saikrishna Gatumida directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
