Schleifen (3)
Verschachtelte Schleifen / formatierte Ausgabe
Sehen Sie sich das folgende Programm genau an. Es enthält
zwei "verschachtelte" for-Schleifen.
Versuchen Sie herauszubekommen, was es
leistet. Erst, wenn Sie eine Vermutung festgehalten haben, dürfen Sie
das Programm ausprobieren. Wenden Sie das Prinzip verschachtelter For-Schleifen
anschließend bei Aufgabe 1 an.
public class Nawaswohl {
public static void main(String[] args) {
for (int m=1; m<11; m++) {
for (int n=1; n<11; n++) {
System.out.format("%4d",m*n);
}
System.out.println();
}
}
}
Die Format-Anweisung in der inneren For-Schleife bewirkt, dass das Produkt m*n als ganze Zahl mit einer festen Breite von 4 Stellen formatiert ausgegeben wird. Da der Zeichensatz des Konsolenfensters unproportional ist (das i hat dieselbe breite wie das W), lassen sich auf diese Art im Konsolenfenster relativ einfach Tabellen erstellen.
Auch Kommazahlen lassen sich formatiert ausgeben. Eine Änderung in System.out.format("%7.2f",(double) m*n) bewirkt, dass das Produkt m*n als Kommazahl mit insgesamt 7 Stellen Breite ausgegeben wird. Davon ist eine Stelle das Komma, zwei Stellen stehen hinter dem Komma. Für den Vorkommateil verbleiben also noch 4 Stellen.
Ausstieg in voller Fahrt
Alle Arten von Schleifen kann man mit
break vorzeitig verlassen.
Bei for-Schleifen kann man außerdem mit continue
vorzeitig zum nächsten Wert der Laufvariablen wechseln.
public class Hypothek {
public static void main(String[] args) throws Exception {
System.out.println("Hypothek\n");
System.out.println("Jahr Restschuld: ");
double schuld=50000;
double jahresRate=3000;
double zinsSatz=5.5;
int i;
for (i=0; i<=100; i++){
String j = String.format("%3d",i);
// Integer dreistellig formatiert
String r = String.format("%,12.2f",schuld);
// Double zwölfstellig (2 Nachkommastellen)
System.out.println(j+r);
schuld = schuld*(1+zinsSatz/100)-jahresRate;
if (schuld<0) break;
// break bricht die Schleife vorzeitig ab
Thread.sleep(100);
}
System.out.println("Nach "+(i+1)+" Jahren ist die Schuld
getilgt.");
}
}
Hier noch ein weiteres Beispiel für die formatierte Ausgabe
von Zahlen.
So wie im folgenden Programm dargestellt, haben Büromenschen früher auf Addiermaschinen multipliziert.
import java.util.*;
public class Multiplikation {
public static void main(String[] args) {
System.out.println("Addiermaschinen-Mutiplikation\n");
Scanner Eingabe = new Scanner(System.in);
System.out.print("Geben Sie den ersten Faktor ein : ");
String a = Eingabe.next();
System.out.print("Geben Sie den zweiten Faktor ein: ");
String b = Eingabe.next();
System.out.println();
System.out.format("%16s \n",a+" "+b);
System.out.println("--------------------");
int produkt = 0;
for (int stelle=a.length()-1;stelle>=0;stelle--) {
int as = Integer.parseInt(a.substring(stelle,stelle+1));
int bWert = Integer.parseInt(b);
for (int times=as-1; times>=0; times--) {
produkt = produkt + bWert;
System.out.format("%16d \n",bWert);
}
b=b+"0";
}
System.out.println("--------------------");
System.out.format("%16d \n",produkt);
}
}
Aufgaben: