Skip to main content

Section 6.17 For Loops

Another type of loop in Java is a for loop. This is usually used when you know how many times you want the loop to execute. It is often a simple counter-controlled loop to do the loop body a set number of times.

Subsection 6.17.1 Three Parts of a For Loop

A for-loop combines all 3 parts of writing a loop in one line to initialize, test, and change the loop control variable. The 3 parts are separated by semicolons (;). Each of the three parts of a for loop declaration is optional (initialization, condition, and change), but the semicolons are not optional.
for (initialize; test condition; change)
{
   loop body
}
The for-loop is almost a shortcut way to write a while loop with all three steps that you need in one line.
Figure 6.17.1. Figure 2: Showing how a for loop maps to a while loop
Watch the following video which compares a while loop and for loop line by line.
Here is a control flow diagram for a for loop. The code in the initialization area is executed only one time before the loop begins, the test condition is checked each time through the loop and the loop continues as long as the condition is true, and the loop control variable change is done at the end of each execution of the body of the loop, just like a while loop. When the loop condition is false, execution will continue at the next statement after the body of the loop.
Figure 6.17.2. Figure 2: Control flow in a for loop

Checkpoint 6.17.3.

Here is a for loop that counts from 1 to 5. Can you change it to count from 2 to 10?

Checkpoint 6.17.4.

Here is a while loop that counts from 5 to 10. Run it and see what it does. Can you change it to a for-loop? Run your for-loop. Does it do the same thing?

Note 6.17.5.

Two common patterns in for-loops are to count from 0 up to an number (using <) or count from 1 to the number including the number (using <=). Remember that if you start at 0 use <, and if you start at 1, use <=. The two loops below using these two patterns both run 10 times. The variable i (for index) is often used as a counter in for-loops.
// These loops both run 10 times
// If you start at 0, use <
for(int i = 0; i < 10; i++)
{
   System.out.println(i);
}
// If you start at 1, use <=
for(int i = 1; i <= 10; i++)
{
   System.out.println(i);
}
Practice

Checkpoint 6.17.6.

4-2-4: What does the following code print?
for (int i = 3; i < 8; i++)
{
   System.out.print(i + " ");
}
  • 3 4 5 6 7 8
  • This loop starts with i equal to 3 but ends when i is equal to 8.
  • 0 1 2 3 4 5 6 7 8
  • What is i set to in the initialization area?
  • 8 8 8 8 8
  • This would be true if the for loop was missing the change part (int i = 3; i < 8; ) but it does increment i in the change part (int i = 3; i < 8; i++).
  • 3 4 5 6 7
  • The value of i is set to 3 before the loop executes and the loop stops when i is equal to 8. So the last time through the loop i is equal to 7.

Checkpoint 6.17.7.

4-2-5: What does the following code print?
for (int i = 1; i <= 10; i++)
{
   System.out.print(i + " ");
}
  • 3 4 5 6 7 8
  • What is i set to in the initialization area?
  • 0 1 2 3 4 5 6 7 8 9
  • What is i set to in the initialization area?
  • 1 2 3 4 5 6 7 8 9 10
  • The value of i starts at 1 and this loop will execute until i equals 11. The last time through the loop the value of i is 10.
  • 1 3 5 7 9
  • This loop changes i by 1 each time in the change area.

Checkpoint 6.17.8.

4-2-6: How many times does the following method print a *?
for (int i = 3; i <= 9; i++)
{
   System.out.print("*");
}
  • 10
  • This would be true if i started at 0 and ended at 9. Does it?
  • 6
  • Since i starts at 3 and the last time through the loop it is 9 the loop executes 7 times (9 - 3 + 1 = 7)
  • 7
  • How many numbers are between 3 and 9 (including 3 and 9)?
  • 9
  • This would be true if i started at 0 and the value of i the last time through the loop it was 8.

Subsection 6.17.2 Decrementing Loops

You can also count backwards in a loop starting from the last number and decrementing down to 0 or 1. All 3 parts of the loop must change to count backwards including the test of when to stop. For example, for (int i=5; i > 0; i–) counts from 5 down to 1.

Checkpoint 6.17.10.

What do you think will happen when you run the code below? How would it change if you changed line 11 to initialize i’s value to 3? Try the Code Lens button to visualize and trace through this code.
The method printPopSong prints the words to a song. It initializes the value of the variable i equal to 5 and then checks if i is greater than 0. Since 5 is greater than 0, the body of the loop executes. Before the condition is checked again, i is decreased by 1. When the value in i is equal to 0 the loop stops executing.

Checkpoint 6.17.11.

Can you make the loop count by 2s backwards? It should print out 5 3 1? Remember to change all 3 parts of the for loop.

Subsection 6.17.3 Summary

  • There are three parts in a for loop header: the initialization, the test condition (a Boolean expression), and an increment or decrement statement to change the loop control variable.
  • In a for loop, the initialization statement is only executed once before the evaluation of the test Boolean expression. The variable being initialized is referred to as a loop control variable.
  • In each iteration of a for loop, the increment or decrement statement is executed after the entire loop body is executed and before the Boolean expression is evaluated again.
  • A for loop can be rewritten into an equivalent while loop and vice versa.
You have attempted of activities on this page.