Loops in Java

Module 1. Java Syntax
Level 6 , Lesson 0
Available

1. Loops in our life

Very often our lives require us to perform the same actions many times. For example, suppose I need to scan a document consisting of lots of pages. That we repeat the same procedure over and over again:

  • Put the first page on the scanner
  • Press the scan button
  • Put the next page on the scanner

This is difficult to do manually. It would be nice if this process could be somehow be automated.

Or consider another example: let's say I want to mark all unread emails in my inbox as spam. Once upon a time I would have to select each email one at a time and mark it as spam.

But programmers are lazy, so they automated this process long ago: now you simply select any list of letters and click "mark as spam", and then your email client runs through the list and moves each email to the spam folder.

What can we say here? It's super convenient when a computer or program can execute hundreds or thousands of monotonous operations with one click. And now you will learn how to do this too.


2. while loop

The if-else statement significantly expanded our programming capabilities, making it possible to write programs that perform different actions in different situations. But there is one more thing that will make our programs an order of magnitude more powerful — loops.

Java has 4 kinds of loops: while, for, for-each and do-while. We will now dig into the very first of these.

A while loop is very simple. It consists of only two parts: a condition and a loop body. The loop body is executed over and over again as long as the condition is true. In general, a while loop looks like this:

while (condition)
   statement;
Notation for a while loop with a single statement
while (condition)
{
   block of statements
}
Notation for a while loop with a block of statements

It's very simple. The statement or block of statements is executed over and over again as long as the loop condition equals true.

This is how it works: first, the condition is checked. If it is true, then the loop body is executed (the statement or block of statements). Then the condition is checked again and the loop body is executed again. And so on until the condition becomes false.

If the condition is always true, then the program will never stop running. It will be permanently stuck in the loop.

If the condition is false the very first time it is checked, then the body of the loop will not be executed even once.


3. Examples of loops

Here are some practical examples of loops in action.

Code Explanation
int n = 5;
while (n > 0)
{
   System.out.println(n);
   n--;
}
5 lines will be displayed on the screen:
5
4
3
2
1
Code Explanation
int  n = 0;
while (n < 10)
{
   System.out.println(n);
   n++;
}
10 lines will be displayed on the screen:
0
1
...
8
9
Code Explanation
Scanner console = new Scanner(System.in);
while(console.hasNextInt())
{
   int x = console.nextInt();
} 
The program reads numbers from the keyboard as long as numbers are entered.
Code Explanation
while (true)
   System.out.println("C");
The program will endlessly print the letter C on the screen.
Code Explanation
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
The program will read lines from the keyboard

until exit is entered.

In the previous example, the equals() method is used to compare strings. If the strings are equal, the function will return true. If the strings are not equal, then it will return false.



4. Loop within a loop

As you learned about conditional statements, you saw that you can use them to implement complex logic by combining multiple conditional statements. In other words, by using an if statement inside an if statement.

You can do the same thing with loops. To write a loop within a loop, you need to write the second loop inside the body of the first loop. It will look something like this:

while (condition for outer loop)
{
   while (condition for inner loop)
   {
     block of statements
   }
}
while loop (with a block of statements) inside another while loop

Let's look at three tasks.

Task 1. Let's say we want to write a program that displays the word Mom on the screen 4 times. A loop is exactly what we need. And our code will look something like this:

Code Explanation
int  n = 0;
while (n < 4)
{
   System.out.println("Mom");
   n++;
}
4 lines will be displayed on the screen:
Mom
Mom
Mom
Mom

Task 2. We want to write a program that displays 5 letter As on a single line. To do this, we need a loop once again. This is what the code will look like:

Code Explanation
int n = 0;
while (n < 5)
{
   System.out.print("A");
   n++;
}
Instead of println(), we will use print(). Otherwise, each letter A would end up on a separate line.

The screen output will be:
AAAAA

Task 3. We want to display a rectangle comprised of letter As. The rectangle should consist of 4 rows by 5 columns. To accomplish this, we now need a nested loop. We'll simply take our first example (the one where we output 4 lines) and replace the code for outputting one line with the code from the second example.

Code Explanation
int n = 0;

while (n < 4) { int m = 0;
while (m < 5) { System.out.print("A"); m++; }
System.out.println(); n++; }
 
The outer loop is purple. It uses the n variable to count the number of iterations of the loop.

The inner loop is green. It uses the m variable to count the number of loop iterations.

We have to explicitly move the cursor to the next line after the inner loop is complete. Otherwise, all the letters that the program prints will end up on one line.

The screen output will be:
AAAAA
AAAAA
AAAAA
AAAAA

The outer and inner loops must use different variables to count the number of loop iterations. We also had to add the System.out.println() command after the inner loop, since that loop displays letter As on the same line. Once the letters on a line are displayed, someone has to move the cursor to a new line.



5. Comparing loops Java vs Pascal

Many of you studied Pascal in high school. To make it easier for you to understand the material here, take a look at this comparison of while loops written in Pascal and Java. If you don't know Pascal, then just skip this part.

Pascal Java
i := 3;
While i >= 0 Do
   Begin
      WriteLn(i);
      i := i - 1;
   End;
int i = 3;
while (i >= 0)
{
   System.out.println(i);
   i--;
}
i := 0;
While i < 3 Do
   Begin
      WriteLn(i);
      i := i + 1;
   End;
int i = 0;
while (i < 3)
{
   System.out.println(i);
   i++;
}
IsExit := False;
While Not isExit Do
   Begin
      ReadLn(s);
      isExit :=  (s = 'exit');
   End;
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
While True Do
   WriteLn('C');
while (true)
   System.out.println("C");
While True Do
   Begin
     ReadLn(s);
     If s = 'exit' Then
       Break;
   End;
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}

Comments (10)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Grzesiek Level 9, Poland
27 March 2024
In the examples, they start iterating from 0 (which is a natural concept), and the first task, is not passed, because you have to start from 1 and create a condition "<= 100" instead of 0 and <100 (which also works well!). EDIT: This wasn't the cause. In the output I additionally added numbering to myself to be sure how many results it displayed. Therefore, the program did not pass one of the requirements (which worked anyway)
Kristina Pfeifer Level 4, Austria
23 February 2024
You 've got me nostalgic with this episode of Pascal ;)
haalk3n Level 6, Romania
1 February 2024
The summation excercise is a garbage one. You were not taught how to do this yet.
Strex Level 6, Canada
14 December 2023
For the Summation exercise, I'd been working on it for some time, unsure why my code just wouldn't work. (my equation wasn't getting the proper sum, and I couldn't figure out why.) On a whim, I cut and repasted the entirety of the code again, and this time it worked! Anybody have an idea on why that might be?
curi0usmind Level 10, Switzerland Expert
15 May 2023
Loops are so much fun
Campbell, Jackson Level 12, Corona, USA
20 September 2023
loop :)
Anonymous #11225109 Level 5, United States of America, United States
3 February 2023
the whole thing is about logical thinking, methods and code is just technical...coding is about how you approach the issue.
Chrizzly Level 12, Earth, Germany
10 August 2022
If you create an individual solution && the check says your solution is ok, should you display the code-gym-solution and try to keep on with that style, or is it better to keep on with your own style? Thank you :)
GerardK Level 16
5 July 2022
For the unfilled rectangle, use a few things you used in previous lessons, and remember, you start at 0 and not at 1.
Anonymous #11172700 Level 5, United Kingdom, United Kingdom
9 November 2022
Nothing wrong with starting with 1. You just need to adjust your loop end conditions to account for the choice made