Die Aufgabe, an der ich mich zu Übungszwecken mal versucht habe, lautet:
Dies ist meine Lösung: Es würde mich interessieren, ob es auch eine "einfachere" Lösung gibt. Hier braucht es nämlich ganz schön viele Kniffe, finde ich: Man muss die Klasse StringBuilder kennen, die Klasse Arrays kennen,... alles Dinge, die ich als Anfänger nicht gerade leicht finde. Vielleicht ist das aber gar nichts Aufregendes für jemanden, der Java schon länger kennt?
Dies ist meine Lösung: Es würde mich interessieren, ob es auch eine "einfachere" Lösung gibt. Hier braucht es nämlich ganz schön viele Kniffe, finde ich: Man muss die Klasse StringBuilder kennen, die Klasse Arrays kennen,... alles Dinge, die ich als Anfänger nicht gerade leicht finde. Vielleicht ist das aber gar nichts Aufregendes für jemanden, der Java schon länger kennt?
Java:
import static java.lang.Integer.parseInt;
import static javax.swing.JOptionPane.showInputDialog;
import java.util.Arrays;
public class XmasTrees {
public static void main(String[] args) {
// TODO Auto-generated method stub
int hoehe = parseInt( showInputDialog( "Hoehe des Baums? ") );
int maxWidth = (2 * hoehe) - 1; /* Maximale Breite des Baums (ganz unten) */
int middlePos = hoehe - 1; /* Position des Stamms */
/* Zunächst erzeuge die Tanne ohne Stamm */
char[] chars = new char[maxWidth];
Arrays.fill(chars, '*');
String filled = new String(chars);
for(int i=0; i <= hoehe - 1; i++) {
StringBuilder stringBuilder = new StringBuilder(filled);
for(int j=0; j < middlePos - i; j++) {
stringBuilder.setCharAt(j,' ');
}
for(int k=middlePos + i + 1; k <= maxWidth - 1 ; k++) {
stringBuilder.setCharAt(k,' ');
}
String row = stringBuilder.toString();
System.out.println(row);
}
/* Nun füge noch den Stamm hinzu */
char[] stammReihe = new char[maxWidth];
Arrays.fill(stammReihe, ' ');
String stammReiheLeer = new String(stammReihe);
StringBuilder stringBuilder1 = new StringBuilder(stammReiheLeer);
stringBuilder1.setCharAt(middlePos,'#');
String stamm = stringBuilder1.toString();
System.out.println(stamm);
}
}