← Back to all posts

09 Java Fundamentals

While Loop in Java

By Dummy for Dummies


Introduction

Remember being a kid, asking your parents for snacks, and getting refused? You didn't just walk away thinking "yeah, snacks aren't good for me, I should eat more vegetables." HELL NAH! You cried and begged for snacks until they gave up and handed them over.

You kept repeating that until you got what you wanted. You were basically stuck in a loop, and only one thing could break you out of it.

Programming works the same way. We make the program repeat the same block of code until it hits the target we set. That's a loop.


While Loop

Just as the name suggests, it will execute a part of code while a condition is true. When the condition is disturbed, the loop will stop. Let's simulate a crying baby:

Java
import java.util.Scanner;

public class BabyCandy {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String pocket = "";

        while (!pocket.equals("candy")) {
            System.out.println("Baby is crying");
            System.out.println("Baby is asking for candy");
            System.out.print("Give something: ");
            pocket = sc.nextLine();
        }

        System.out.println("Baby got candy");
        System.out.println("Baby is happy!");
        sc.close();
    }
}
Console Output
Baby is crying Baby is asking for candy Give something: toy Baby is crying Baby is asking for candy Give something: chocolate Baby is crying Baby is asking for candy Give something: candy Baby got candy Baby is happy!

Points to Remember


Infinite Loop Demonstration

Java
public class Main {
    public static void main(String[] args) {
        int n = 0;

        while (n == 0) {
            System.out.println("HELP I AM STUCK IN LOOP!");
        }

        System.out.println("Loop exited");
    }
}
Console Output (infinite)
HELP I AM STUCK IN LOOP! HELP I AM STUCK IN LOOP! HELP I AM STUCK IN LOOP! HELP I AM STUCK IN LOOP! ...

Note: The code will check if n equals 0. Every time it'll find the condition true. With no change from inside, it'll spam "HELP I AM STUCK IN LOOP" until you close the console manually. It'll NEVER reach "Loop exited".


Do While Loop

Do while loop is a variant of the original while loop. There is just a small difference between them.

Java
public class Main {
    public static void main(String[] args) {
        int number = 1;

        do {
            System.out.println("Number: " + number);
            number++;  // increments the number
        } while (number < 6);  // semicolon required here!

        System.out.println("Loop exited!");
    }
}
Console Output
Number: 1 Number: 2 Number: 3 Number: 4 Number: 5 Loop exited!

Note: The while part in the do-while loop ends with a semicolon: while (number < 6);


Exercise

Let's do an exercise for what we studied in this post. Study this code, break it down, analyze it and identify the concepts used here. It would be even better if you write down your observations and make a mini report on it.

Java
import java.util.Scanner;

public class WhileLoopExercise {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String secretPin = "1234";
        String enteredPin = "";
        int attempts = 0;
        int maxAttempts = 3;
        int balance = 1000;

        // while loop to check PIN
        while (!enteredPin.equals(secretPin) && attempts < maxAttempts) {
            System.out.print("Enter your secret PIN: ");
            enteredPin = sc.nextLine();
            attempts++;

            if (!enteredPin.equals(secretPin)) {
                System.out.println("Wrong PIN! Attempts left: " + (maxAttempts - attempts) + "\n");
            }
        }

        // check why loop ended
        if (enteredPin.equals(secretPin)) {
            System.out.println("\nAccess Granted!");
            System.out.println("It took you " + attempts + " attempt(s).\n");

            String choice = "";
            while (!choice.equals("exit")) {
                System.out.println("Choose an option:");
                System.out.println("1. Check Balance");
                System.out.println("2. Withdraw Money");
                System.out.println("3. Exit");
                System.out.print("Your choice: ");
                choice = sc.nextLine();

                if (choice.equals("1")) {
                    System.out.println("Your balance is $" + balance + ".\n");
                } else if (choice.equals("2")) {
                    System.out.print("Enter withdrawal amount: ");
                    int amount = sc.nextInt();
                    sc.nextLine();
                    if (amount <= 0) {
                        System.out.println("Invalid amount.\n");
                    } else if (amount > balance) {
                        System.out.println("Not enough balance!\n");
                    } else {
                        balance -= amount;
                        System.out.println("Withdrawal successful. Remaining balance: $" + balance + ".\n");
                    }
                } else if (choice.equals("3") || choice.equalsIgnoreCase("exit")) {
                    System.out.println("Logging out... Goodbye!");
                    choice = "exit";
                } else {
                    System.out.println("Invalid choice! Try again.\n");
                }
            }
        } else {
            System.out.println("\nToo many wrong attempts! Your account is locked.");
        }

        sc.close();
    }
}
Console Output
Enter your secret PIN: 0000 Wrong PIN! Attempts left: 2 Enter your secret PIN: 1234 Access Granted! It took you 2 attempt(s). Choose an option: 1. Check Balance 2. Withdraw Money 3. Exit Your choice: 1 Your balance is $1000. Choose an option: 1. Check Balance 2. Withdraw Money 3. Exit Your choice: 2 Enter withdrawal amount: 300 Withdrawal successful. Remaining balance: $700. Choose an option: 1. Check Balance 2. Withdraw Money 3. Exit Your choice: 3 Logging out... Goodbye!

Mini Project: While Loop Simple Calculator

Your project is to create a Java program that works like a very simple calculator. The program should keep showing a menu until the user decides to exit.

Menu example:

The program should ask the user for two numbers and perform the chosen operation. If the user enters an invalid choice, print "Invalid option". The program should continue looping until the user chooses Exit.

While writing the program, make sure you use:


Example Output

Console Output
Simple Calculator Choose an option: 1. Add two numbers 2. Subtract two numbers 3. Multiply two numbers 4. Divide two numbers 5. Exit Your choice: 1 Enter first number: 10 Enter second number: 5 Result: 10 + 5 = 15 Choose an option: 1. Add two numbers 2. Subtract two numbers 3. Multiply two numbers 4. Divide two numbers 5. Exit Your choice: 4 Enter first number: 20 Enter second number: 4 Result: 20 / 4 = 5.0 Choose an option: 1. Add two numbers 2. Subtract two numbers 3. Multiply two numbers 4. Divide two numbers 5. Exit Your choice: 4 Enter first number: 10 Enter second number: 0 Invalid: Division by zero Choose an option: 1. Add two numbers 2. Subtract two numbers 3. Multiply two numbers 4. Divide two numbers 5. Exit Your choice: 5 Exiting calculator. Goodbye!

Closing

That's it for while loop in Java. While loop is like checking first if baby has candy before crying. Do-while is like the baby crying at least once before even checking.

← Previous 08 - Switch statements in Java Next → 10 - For Loop in Java