Skip to content
This repository has been archived by the owner on Apr 1, 2021. It is now read-only.

Commit

Permalink
Merge pull request #560 from madhav-datt/patch-1
Browse files Browse the repository at this point in the history
Create Java-Loops.md
  • Loading branch information
raisedadead committed Mar 11, 2016
2 parents 13751a3 + 7e5ba3e commit 57ab7cb
Showing 1 changed file with 246 additions and 0 deletions.
246 changes: 246 additions & 0 deletions Java-Loops.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
# Java Loops

Whenever you need to execute a block of code multiple times, a loop will often come in handy. In general, a loop looks something like this:

![Loop Schematic Diagram](http://cse.iitkgp.ac.in/pds/notes/img/loop2.gif)

## Types of Loops

Java has 4 types of loops - the `while`, `do while`, `for` and `for each`. While you can pick your favorite and use that almost everywhere, each of them has certain advantages in different applications.

You can use a *debugger* (a lot of IDEs have one - check out [Eclipse](http://eclipsetutorial.sourceforge.net/Debugger-Tutorial-Companion-Document.pdf), [Netbeans](https://netbeans.org/kb/docs/java/debug-visual.html), [IntelliJ](https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html) etc.), [set up breakpoints](http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-add_line_breakpoints.htm) and visualize how the following code about loops, works step-by-step.

### The While loop

The `while` statement evaluates the `expression` (which must return a boolean value), and if it is `true`, the `Statements` get executed.

```java
while (expression)
{
// Statements
}
```

In the following example, the `expression` is given by `iter_While < 10`. As we increment `iter_While` by `1` each time the loop is executed, the `while` loop will keep going till `iter_While` reaches `10`.

```java
int iter_While = 0;
while (iter_While < 10)
{
System.out.print (iter_While + " ");
// Increment the counter
// Iterated 10 times, iter_While 0,1,2...9
iter_While++;
}
System.out.println ("iter_While Value: " + iter_While);
```

Output:

0 1 2 3 4 5 6 7 8 9
iter_While Value: 10


### The Do While loop

The `do while` is very similar to the `while` loop in the way it works, but is *exit controlled* (unlike the `for` and `while` loops which are *entry controlled*), that is, the truth value of its `expression` is evaluated after the execution of `Statements`.

```java
do
{
// Statements
}
while (expression);
```

This kind of loop is particularly useful if you want your `Statements` to be executed atleast once, irrespective of what `expression` evaluates to. You want to do this if you are initializing a variable inside your loop and plan on using its value later.

```java
int iter_DoWhile = 20;
do
{
System.out.print (iter_DoWhile + " ");

// Increment the counter
iter_DoWhile++;
}
while(iter_DoWhile < 10);
System.out.println ("iter_DoWhile Value: " + iter_DoWhile);
```

Output:

20
iter_DoWhile Value: 21

### The For loop

The `for` loop give you a compact way to iterate over a range of values.

```java
for (initialization; expression; increment)
{
// Statements
}
```

* `initialization` - Initializes the loop and is executed just once, at the beginning.
* `expression` - Evaluated at the beginning of each iteration. If the `expression` evaluates to `true`, `Statements` will get executed.
* `increment` - Invoked after each iteration through the loop. You can increase/decrease the value of variables here.

```java
for (int iter_For = 0; iter_For < 10; iter_For++)
{
System.out.print (iter_For + " ");
// Iterated 10 times, iter_For 0,1,2...9
}
System.out.println("iter_For Value: " + fooFor);
```

Output:

0 1 2 3 4 5 6 7 8 9
iter_For Value: 10

### The For Each loop

Also called the enhanced for loop, it is an extremely useful and simple way to iterate over each item in a collection, arrays as well as objects that implement the Iterable interface.

```java
for (object : iterable)
{
// Statements
}
```

The loop is read as - for each element in the `iterable` (could be an array, collectable etc.). The `object` type must match the element type of the `iterable`.

```java
int[] number_list = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

for (int numbers : number_list)
{
System.out.print (numbers + " ");
//Iterated 10 times, numbers 0,1,2...9
}
```

Output:

0 1 2 3 4 5 6 7 8 9

In the above code snippet, `number_list` is an array. If you don't know what this is, don't worry about it. An array is a container object that holds a fixed number of values of a single type, but more on this later.

## Loop Control Statemens

### break

Terminates the loop and starts the execution of the code that immediately follows the loop. If you have nested loops, the `break` statement will only end the loop in which it is placed.

```java
for (int i = 0; i < 10; i++) // Loop 1
{
for (int j = 0; j < 10; j++) // Loop 2
{
if (i == 5 && j == 5)
{
break;
// Will terminate Loop 2, but Loop 1 will keep going
}
}
}
```

But if you do want to break out of the outer loop too, you can use a label to exit:

```java
loop1: // This is a label
for (int i = 0; i < 10; i++) // Loop 1
{
for (int j = 0; j < 10; j++) // Loop 2
{
if (i == 5 && j == 5)
{
break loop1;
// Will break out of Loop 1, instead of just breaking out of Loop 2
}
}
}
```

`break` statements can be particulary useful while searching for an element in an array. Using `break` in the following code improves efficiency as the loop stops as soon as the element we are looking for (`searchFor`) is found, instead of going on till the end of `arrayInts` is reached.

```java
int[] number_list = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int searchFor = 5;

for (int i : arrayInts)
{
if (arayOfInts[i] == searchfor)
break;
}
```

### continue

The `continue` statement makes a loop skip all the following lines after the continue and jump ahead to the beginning of the next iteration. In a `for` loop, control jumps to the update statement, and in a `while` or `do while` loop, control jumps to the boolean expression/condition.

```java
for (int j = 0; j < 10; j++)
{
if (j == 5)
{
continue;
}
System.out.print (j + " ");
}
```

The value of `j` will be printed for each iteration, except when it is equal to `5`. The print statement will get skipped because of the `continue` and the output will be:

0 1 2 3 4 6 7 8 9

Say you want to count the number of `i`s in a the word `mississippi`. Here you could use a loop with the `continue` statement, as follows:

```java
String searchWord = "mississippi";

// max stores the length of the string
int max = searchWord.length();
int count_i = 0;

for (int i = 0; i < max; i++)
{
// We only want to count i's - skip other letters
if (searchMe.charAt(i) != 'i')
continue;

// Increase count_i for each i encountered
numPs++;
}
```

## Infinite Loops

If you want your loop to go on infinitely, you can use the `while`, `do while` and `for` statement.

```java
// Infinite For Loop
for ( ; ; )
{
// your code here
}

// Infinite While Loop
while (true)
{
// your code here
}

// Infinite Do While Loop
do
{
// your code here
}
while (true);
```

0 comments on commit 57ab7cb

Please sign in to comment.