Java’s While and Do-While Loops in Five Minutes

    Indrek Ots
    Share

    A while loop is a control flow statement that allows us to run a piece of code multiple times. Like loops in general, a while loop can be used to repeat an action as long as a condition is met. The structure of Java’s while loop is very similar to an if statement in the sense that they both check a boolean expression and maybe execute some code.

    To be able to follow along, this article expects that you understand variables and arrays in Java. It would also be good if you had some experience with conditional expressions.

    While Loop

    The while loop is the most basic loop construct in Java. It consists of the while keyword, the loop condition, and the loop body.

    while (condition) {
        // loop body
    }
    

    A single run-through of the loop body is referred to as an iteration. Before each iteration, the loop condition is evaluated and, just like with if statements, the body is executed only if the loop condition evaluates to true. In fact, a while loop body is repeated as long as the loop condition stays true – you can think of them as if statements where the body of the statement can be repeated.

    Usually some execution of the loop will change something that makes the condition evaluate to false and thus the loop ends. A loop with a condition that never becomes false runs infinitely and is commonly referred to as an infinite loop.

    Example

    int num = 0;
    while (num < 10) {
        System.out.println(num);
        num++;
    }
    

    This example prints out numbers from 0 to 9. If this seems foreign to you, don’t worry. We’ll go through it step by step.

    We first initialize a variable num to equal 0. This will be our loop counter. When the program encounters a while statement, its condition will be evaluated. In our case 0 < 10 evaluates to true and the loop body is executed. Inside the loop body, the num variable is printed out and then incremented by one. Here is where the first iteration ends.

    After the first run-through of the loop body, the loop condition is going to be evaluated for the second time. 1 < 10 still evaluates to true and the next iteration can commence. As you can imagine, the same process will be repeated several more times.

    The final iteration begins when num is equal to 9. Our loop counter is printed out the last time and is incremented to equal 10. This time, however, a new iteration cannot begin because the loop condition evaluates to false. 10 is not smaller than 10.

    As you can see, the loop ran as long as the loop condition held true. Armed with this knowledge, you can create while loops that are a bit more complex, but on the other hand, more useful as well. Let’s iterate over an array.

    String[] names = {"Doc", "Dopey", "Bashful", "Grumpy", "Sneezy", "Sleepy", "Happy"};
    int index = 0;
    while (index < names.length) {
        System.out.println(names[index]);
        index++;
    }
    

    The general concept of this example is the same as in the previous one. We initialize a loop counter and iterate over an array until all elements in the array have been printed out. As a matter of fact, iterating over arrays (or Collections for that matter) is a very common use case and Java provides a loop construct which is better suited for that – the for loop.

    Do-While Loop

    A do-while loop is very similar to a while loop but there is one significant difference: Unlike with a while loop, the condition is checked at the end of each iteration. This means that a do-while loop is always executed at least once.

    do {
        // loop body
    }
    while (condition);
    

    Example

    A do-while loop first executes the loop body and then evaluates the loop condition. Based on the result of the evaluation, the loop either terminates or a new iteration is started. To illustrate this idea, let’s have a look at a simple guess my name game.

    Scanner scanner = new Scanner(System.in);
    String guess;
    do {
        System.out.print("Guess my name: ");
        guess = scanner.nextLine();
    }
    while (!"Daffy Duck".equals(guess));
    System.out.println("Congratulations, you guessed my name correctly!");
    

    The example uses a Scanner to parse input from System.in. This is the standard input stream which in most cases corresponds to keyboard input. To put it simply, we’re going to read text typed by the player.

    In a guessing game we would like to prompt the player for an answer at least once and do it until the player guesses the correct answer. A do-while loop fits perfectly here. In the loop body we receive input from the player and then the loop condition checks whether it is the correct answer or not. The loop must run as long as the guess does not equal Daffy Duck. If a correct answer is received, the loop terminates and we congratulate the player.

    Java's while loop is exiting - but not THAT much

    Summary

    Loops allow you to repeat a block of code multiple times. This article covered the while and do-while loops in Java. They’re relatively similar in that both check a condition and execute the loop body if it evaluated to true but they have one major difference: A while loop’s condition is checked before each iteration – the loop condition for do-while, however, is checked at the end of each iteration. This means that a do-while loop is always executed at least once.

    In addition to while and do-while, Java provides other loop constructs that were not covered in this article. And if you’re interested enough, you can have a look at recursion. Sometimes it’s possible to use a recursive function instead of loops.

    CSS Master, 3rd Edition