for
public class Zaehlen {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
System.out.print(i + " ");
}
System.out.println();
int summe = 0;
for (int i = 1; i <= 100; i++) summe += i;
System.out.println(summe);
for (int i = 10; i > 0; i -= 3) System.out.print(i + " ");
System.out.println();
}
}1 2 3 4 5 5050 10 7 4 1
Im Kopf stehen Start, Bedingung und Schritt. Die Variable i gilt nur in der Schleife.
while und do-while
public class Bedingt {
public static void main(String[] args) {
int n = 1;
while (n < 100) n *= 2;
System.out.println(n);
int versuche = 0;
do {
versuche++;
} while (versuche < 3); // läuft mindestens einmal
System.out.println(versuche);
}
}128 3
Erweiterte for-Schleife (for-each)
Für Arrays und Collections ist for-each die Standardwahl:
import java.util.List;
public class Jeder {
public static void main(String[] args) {
String[] farben = {"rot", "grün", "blau"};
for (String f : farben) System.out.print(f + " ");
System.out.println();
List<Integer> zahlen = List.of(4, 8, 15);
int s = 0;
for (int z : zahlen) s += z;
System.out.println(s);
for (char c : "Java".toCharArray()) System.out.print(c + "-");
System.out.println();
}
}rot gr?n blau 27 J-a-v-a-
break, continue und Marken
public class Sprung {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) continue; // gerade überspringen
if (i > 7) break; // abbrechen
System.out.print(i + " ");
}
System.out.println();
aussen:
for (int a = 1; a < 10; a++) {
for (int b = 1; b < 10; b++) {
if (a * b == 42) {
System.out.println(a + " * " + b);
break aussen; // beide Schleifen verlassen
}
}
}
}
}1 3 5 7 6 * 7
Verschachtelte Schleifen
public class Tabelle {
public static void main(String[] args) {
for (int zeile = 1; zeile <= 4; zeile++) {
for (int spalte = 1; spalte <= 5; spalte++) {
System.out.printf("%4d", zeile * spalte);
}
System.out.println();
}
for (int i = 1; i <= 4; i++) System.out.println(" ".repeat(4 - i) + "*".repeat(2 * i - 1));
}
}1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 * *** ***** *******
Typische Algorithmen
public class Algos {
public static void main(String[] args) {
int[] z = {5, 3, 9, 1, 7};
int max = z[0], min = z[0], summe = 0;
for (int x : z) {
if (x > max) max = x;
if (x < min) min = x;
summe += x;
}
System.out.println("max " + max + ", min " + min + ", Schnitt " + (double) summe / z.length);
// Primzahlen bis 30
for (int n = 2; n <= 30; n++) {
boolean prim = true;
for (int t = 2; t * t <= n; t++) if (n % t == 0) { prim = false; break; }
if (prim) System.out.print(n + " ");
}
System.out.println();
// FizzBuzz
for (int i = 1; i <= 15; i++) {
System.out.print((i % 15 == 0 ? "FizzBuzz" : i % 3 == 0 ? "Fizz" : i % 5 == 0 ? "Buzz" : i) + " ");
}
System.out.println();
}
}max 9, min 1, Schnitt 5.0 2 3 5 7 11 13 17 19 23 29 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz
Merke
forfür feste Anzahl,whilefür Bedingungen,do-whileläuft mindestens einmalfor (Typ x : sammlung)ist die einfachste Art, über Arrays und Listen zu laufenbreakbeendet,continueüberspringt; Marken verlassen mehrere Schleifen- Verschachtelte Schleifen bauen Tabellen und Muster
Aufgabe
Gib das kleine Einmaleins (1 bis 10) als Tabelle aus und berechne die Summe aller geraden Zahlen von 1 bis 100.