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?