Im folgenden Beispiel werden Reihen von * nach einigen Mustern (``trapezförmig'') ausgegeben, wobei die einzelnen Muster durch eine Linie getrennt werden sollen. Die maximale Anzahl der * wird eingegeben; die Ausgabe bricht ab, wenn 0 eingegeben wurde:
5
*
**
***
****
*****
*****
****
***
**
*
------
*
**
***
****
*****
*****
****
***
**
*
------
*****
****
***
**
*
*
**
***
****
*****
------
*****
****
***
**
*
*
**
***
****
*****
Die ``Programmsteuerung'' wurde im Hauptprogramm mit Hilfe einer do - while Schleife realisiert: Solange keine 0 eingegeben wurde, werden die einzelnen ``Dreiecksteile'' ausgegeben. Beachte die korrekte Übergabe der eingegebenen Zahl!
import java.io.*;
public class trapez {
public static void main (String [] args) throws IOException {
int zahl;
do {
BufferedReader zahlenpuffer = new BufferedReader(new InputStreamReader(System.in));
zahl = Integer.parseInt(zahlenpuffer.readLine());
dreieck1(zahl, true);
dreieck1(zahl, false);
linie(zahl);
dreieck2(zahl, false);
dreieck2(zahl, true);
linie(zahl);
dreieck3(zahl);
linie(zahl);
dreieck4(zahl);
} while (zahl != 0);
}
public static void linie(int reihe) {
for (int i=0; i<=reihe; i++)
System.out.print("-");
System.out.print("\n");
}
public static void dreieck1(int zahl, boolean modus) {
if (modus)
for (int i = 0; i<zahl; i++) ausgabe1(i);
else
for (int i = zahl-1; i>=0; i--) ausgabe1(i);
}
public static void ausgabe1(int reihe) {
for (int j = 0; j <= reihe; j++) {
System.out.print("*");
}
System.out.print("\n");
}
public static void dreieck2(int zahl, boolean modus) {
if (modus)
for (int i = 0; i<zahl; i++) ausgabe2(i, zahl);
else
for (int i = zahl-1; i>=0; i--) ausgabe2(i, zahl);
}
public static void ausgabe2(int reihe, int rest) {
for (int j = 0; j < reihe; j++)
System.out.print(" ");
for (int j = 0; j < rest-reihe; j++)
System.out.print("*");
System.out.print("\n");
}
public static void dreieck3(int zahl) {
dreieck2(zahl, true);
dreieck2(zahl, false);
}
public static void dreieck4(int zahl) {
dreieck1(zahl,false);
dreieck1(zahl,true);
}
}
Das obige Programm könnte noch komprimierter formuliert werden. Wie?