There are two types of loops: for loops and while loops. Some languages have a couple of variations on the while loop (e.g. until, do while).
| Description | Syntax | Example |
|---|---|---|
| Normal while loop This only executes if the condition is true |
while (condition) {
...
...
} |
while (lives > 0) {
movePlayer();
resolveAttacks();
...
} |
| Infinite loop: while Infinite loop: for |
while (true) {
...
}
for (;;) {
...
} |
|
| Do While loop This always executes at least once. |
do {
...
...
} while (condition); |
boolean done = false;
do {
num = myScanner.nextInt();
if (num > 0) done = true;
} while (!done); |
Note that in the do-while format, you MUST end the last line with a ; (semicolon).
Remember: all lines must end in { } or ;
Example:
public static void main(String[] args) {
int n=0;
while (n < 15) {
System.out.println(n + " still looping ...");
n++;
}
System.out.println("loop is over");
}
I've written about this in the page on for loops
Basically, . . . break; exits the loop,
continue; stops that iteration of the loop and goes back to the top.
You can also exit while loops by making the loop test condition false.
Example:
import java.util.Scanner;
/* Program to add up to 100
by Mr. Harwood
Sept 18, 2014
*/
public class WhileLoop {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num, count, total;
total = count = 0;
while (total < 100) {
System.out.print("Type in a number: ");
if (sc.hasNextInt()) { //check for "int"
num = sc.nextInt();
} else { //get rid of junk (rest of line)
sc.nextLine();
continue; //go to beginning of loop
}
if (num > 100) continue; //no numbers more than 100
if (num < 0) break; //stop loop immediately for negative numbers
if (num == 0) System.exit(0); //terminate!
count++;
total += num;
}
System.out.printf("Your total is %d, after %d numbers",total,count);
}
}
READ THIS! you should never use System.exit(0) unless you have a very specific and good reason to do so. It is not good programming technique and should be avoided.
If this were an important program, I'd write this instead: if (num == 0) return . This is a better way, but we haven't learnt about "return" yet.