Skip to main content

Command Palette

Search for a command to run...

A Beginner's Guide to Outer and Inner Loops in Java

Published
3 min read
A Beginner's Guide to Outer and Inner Loops in Java
Y

Final-year CSE student at Chandigarh University passionate about web development and data structures and algorithm. I write articles on Java and DSA in Java, sharing insights and coding tips. Exploring my journey into teaching while refining my skills in software development.

Understanding Outer and Inner Loops

In programming, loops allow us to repeat a set of instructions multiple times. When you use a loop inside another loop, the outer loop controls the number of times the inner loop executes. This combination is common when working with multi-dimensional problems or when comparing pairs of elements in a data structure.


What is an Outer Loop?

  • The outer loop is the main loop that controls the overall iteration.

  • It executes a fixed number of iterations and, for each iteration, executes the entire body of the loop, which often includes the inner loop.


What is an Inner Loop?

  • The inner loop is the loop nested inside the outer loop.

  • It executes completely for each iteration of the outer loop.


How They Work Together

  • The outer loop determines how many times the inner loop will run in total.

  • For each iteration of the outer loop, the inner loop executes all its iterations.


Real-Life Analogy

Imagine a classroom where every student shakes hands with every other student:

  1. Outer Loop: Each student goes around to shake hands.

  2. Inner Loop: For every student in the outer loop, the inner loop ensures they shake hands with every other student.

    Example of Outer and Inner Loops

Example 1: Nested Loops in a Simple Problem

Problem: Print all possible pairs of numbers from an array.

public class NestedLoopsExample {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3};

        // Outer Loop: Iterates over the first element of the pair
        for (int i = 0; i < nums.length; i++) {
            // Inner Loop: Iterates over the second element of the pair
            for (int j = 0; j < nums.length; j++) {
                System.out.println("(" + nums[i] + ", " + nums[j] + ")");
            }
        }
    }
}

Output:

(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)
(2, 3)
(3, 1)
(3, 2)
(3, 3)

How It Works:

  1. Outer Loop:

    • Runs from i = 0 to i = nums.length - 1.

    • Controls the first element of each pair (nums[i]).

  2. Inner Loop:

    • Runs from j = 0 to j = nums.length - 1 for each iteration of the outer loop.

    • Controls the second element of each pair (nums[j]).


Example 2: Checking for Duplicates Using Nested Loops

Problem: Given an array, check if any pair of elements are equal.

public class CheckDuplicates {
    public static boolean containsDuplicate(int[] nums) {
        // Outer Loop: Iterates over each element
        for (int i = 0; i < nums.length; i++) {
            // Inner Loop: Compares nums[i] with the rest of the elements
            for (int j = i + 1; j < nums.length; j++) {
                if (nums[i] == nums[j]) {
                    return true; // Duplicate found
                }
            }
        }
        return false; // No duplicates found
    }

    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 1};
        System.out.println(containsDuplicate(nums)); // Output: true
    }
}

How It Works:

  1. Outer Loop:

    • Iterates over each element of the array (nums[i]).

    • Starts from the first element and moves to the second last element.

  2. Inner Loop:

    • Compares the current element (nums[i]) with all subsequent elements (nums[j]).

    • Starts from the index i + 1 to avoid duplicate comparisons.

Key Points

  • Outer Loop controls the larger operation (like iterating over all elements).

  • Inner Loop handles smaller, repetitive tasks for each iteration of the outer loop (like comparing or printing pairs).