"Weihnachtsbäume" anzeigen: Höhe als Parameter

BeginnerJava

Mitglied
Die Aufgabe, an der ich mich zu Übungszwecken mal versucht habe, lautet:

Weihnachtsbäume.jpg

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);
    }           
            
}
 

mihe7

Top Contributor
Wenn man mal die rechte Seite des Baums und den Stamm weglässt und die Leerzeichen mit "-" darstellt, sieht der Baum so aus:
Code:
----*
---**
--***
-****
*****
Wir haben es also mit einer quadratischen Fläche mit Seitenlänge h zu tun, wobei h die gewünschte Höhe des Baums kennzeichnet. Die h Zeichen je Zeile teilen sich auf in Leerzeichen und Sterne: h = Anzahl Leerzeichen + Anzahl Sterne. Ganz oben steht ein Stern, macht bei einer Höhe von h=5 also 4 Leerzeichen.

Das kann man mal zeichnen:
Java:
int sterne = 1;
for (int zeile = 0; zeile < hoehe; zeile++) {
    int leerzeichen = hoehe - sterne;
    for (int i = 0; i < leerzeichen; i++) {
        System.out.print(" ");
    }
    for (int i = 0; i < sterne; i++) {
        System.out.print("*");
    }
    System.out.println();
    sterne++;
}

Jetzt müssen wir nur noch die Zahl der gezeichneten Sterne anpassen. Das sind nun doppelt so viele abzgl. des Sterns in der Mitte, den wir ja schon gezeichnet haben:

Java:
int sterne = 1;
for (int zeile = 0; zeile < hoehe; zeile++) {
    int leerzeichen = hoehe - sterne;
    for (int i = 0; i < leerzeichen; i++) {
        System.out.print(" ");
    }
    for (int i = 0; i < 2 * sterne - 1; i++) {
        System.out.print("*");
    }
    System.out.println();
    sterne++;
}

Am Ende brauchen wir noch den Stamm. Da sind es natürlich h - 1 Leerzeichen:
Java:
// Krone
int sterne = 1;
for (int zeile = 0; zeile < hoehe; zeile++) {
    int leerzeichen = hoehe - sterne;
    for (int i = 0; i < leerzeichen; i++) {
        System.out.print(" ");
    }
    for (int i = 0; i < 2 * sterne - 1; i++) {
        System.out.print("*");
    }
    System.out.println();
    sterne++;
}

// Stamm
for (int i = 0; i < hoehe - 1; i++) {
    System.out.print(" ");
}
System.out.println("#");

Fertig.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
W ListView komplett anzeigen Java Basics - Anfänger-Themen 2
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
D Erste Schritte png in JFrame anzeigen? Java Basics - Anfänger-Themen 3
M PNG als Spieler im Fenster anzeigen Java Basics - Anfänger-Themen 4
M Anzahl Schleifendurchgänge nach x Sekunden anzeigen Java Basics - Anfänger-Themen 2
M Rekursives Programm zum Anzeigen von Primzahlen Java Basics - Anfänger-Themen 3
M Auf MainJFrame Panels anzeigen lassen Java Basics - Anfänger-Themen 19
Rubberduck Combobox-Werte in GUI anzeigen Java Basics - Anfänger-Themen 13
J Die größte Zahl anzeigen Java Basics - Anfänger-Themen 19
V_Fynn03 Kontostand anzeigen lassen von einer anderen Klasse Java Basics - Anfänger-Themen 3
C Erste Schritte Bilder nach Export anzeigen Java Basics - Anfänger-Themen 0
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
J Einen Buttonklick in Label anzeigen Java Basics - Anfänger-Themen 6
M jTextPane Bild anzeigen Java Basics - Anfänger-Themen 6
A ArrayList - size() nur nach bestimmtem index anzeigen lassen Java Basics - Anfänger-Themen 13
E JAvaFX: Verschiedene Panels nach Klick auf Node des TreeView anzeigen Java Basics - Anfänger-Themen 0
S ArrayListe in einer JComboBox anzeigen Java Basics - Anfänger-Themen 10
C Methoden Dateien im Ordner anzeigen Java Basics - Anfänger-Themen 12
M Vererbung Ein JLabel einer Elternklasse anzeigen Java Basics - Anfänger-Themen 8
A Jdialog nur 1x anzeigen Java Basics - Anfänger-Themen 2
J Wie kann ich Images per Tastendruck anzeigen/einfügen? Java Basics - Anfänger-Themen 3
T Positionen anzeigen Java Basics - Anfänger-Themen 6
M Probleme mit Anzeigen von String in GUI und if-Anweisung Java Basics - Anfänger-Themen 9
N Datei einlesen und grafisch anzeigen Java Basics - Anfänger-Themen 31
L Verschiedene Bilder per Knopfdruck anzeigen lassen Java Basics - Anfänger-Themen 17
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
binop Bild anzeigen lassen Java Basics - Anfänger-Themen 2
W Erste Schritte Zweidimensionales Array - Gerade Zahlen anzeigen lassen Java Basics - Anfänger-Themen 3
S eingegebene Matrix anzeigen Java Basics - Anfänger-Themen 4
T Kamerabild anzeigen Java Basics - Anfänger-Themen 1
J JPG in JFrame anzeigen lassen Java Basics - Anfänger-Themen 3
J Erstes Applet läßt sich nicht anzeigen Java Basics - Anfänger-Themen 2
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
A Link in der Eingabeleiste nichr anzeigen Java Basics - Anfänger-Themen 1
C Methoden aus Klassen anzeigen lassen Java Basics - Anfänger-Themen 14
T Output in CMD anzeigen lassen? Java Basics - Anfänger-Themen 1
N Input/Output Wenn kein Input, dann Fehler anzeigen lassen im JFrame Java Basics - Anfänger-Themen 6
L Videos in Java anzeigen lassen Java Basics - Anfänger-Themen 10
M Wert aus String Feld anzeigen Java Basics - Anfänger-Themen 7
C JComboBox "Hilfstext" anzeigen Java Basics - Anfänger-Themen 11
C Html in einem JEditorPane anzeigen Java Basics - Anfänger-Themen 2
D Bild im Applet anzeigen Java Basics - Anfänger-Themen 3
W Frame in anderer Klasse anzeigen lassen Java Basics - Anfänger-Themen 1
D Externe Eeite beim Mousover anzeigen Java Basics - Anfänger-Themen 0
M JSP-Einfaches Bild anzeigen Java Basics - Anfänger-Themen 4
L Über 100e Werte anzeigen Java GUI Java Basics - Anfänger-Themen 1
R File chooser Dateien in frame anzeigen lassen Java Basics - Anfänger-Themen 5
T JLabel anzeigen lassen... Java Basics - Anfänger-Themen 6
H Erste Schritte Uhrzeit anzeigen in Minuten Dezimal Java Basics - Anfänger-Themen 8
A Datum zwischen zwei Daten berechnen und in Tagen anzeigen Java Basics - Anfänger-Themen 4
B Variable im Fenster anzeigen lassen? Java Basics - Anfänger-Themen 2
L bestimmten Frame anzeigen lassen? Java Basics - Anfänger-Themen 6
P JTabel größe ändern und button anzeigen Java Basics - Anfänger-Themen 5
D Dialoge anzeigen Java Basics - Anfänger-Themen 9
M Icon laden und anzeigen Java Basics - Anfänger-Themen 2
M Auslesen - Anzeigen - Schreiben Java Basics - Anfänger-Themen 13
K wie Datum in JTable anders anzeigen lassen Java Basics - Anfänger-Themen 2
X Methode in JTextArea anzeigen lassen Java Basics - Anfänger-Themen 18
J Ladebalken anzeigen während Bilder geladen werden Java Basics - Anfänger-Themen 2
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
M Website anzeigen Java Basics - Anfänger-Themen 4
P Erste Schritte Image anzeigen in ausführbarer jar mit der Toolkit class Java Basics - Anfänger-Themen 8
C Button - neues Fenster - Bestellung anzeigen Java Basics - Anfänger-Themen 10
H Java Server/Client, HTML Seite anzeigen Java Basics - Anfänger-Themen 2
B JFrame - Namen anzeigen Java Basics - Anfänger-Themen 2
M Array von Personen anzeigen Java Basics - Anfänger-Themen 3
J Panel + Label anzeigen - Ich kriege es nicht hin Java Basics - Anfänger-Themen 3
G JList Objekte richtig anzeigen in JDK 6 Java Basics - Anfänger-Themen 5
G Bilder in Jar anzeigen lassen Java Basics - Anfänger-Themen 23
B jar Inhalt anzeigen Java Basics - Anfänger-Themen 5
M GUI JList - Objekte listen u. Feld anzeigen? Java Basics - Anfänger-Themen 16
M Componenten auf JPanel anzeigen Java Basics - Anfänger-Themen 2
L Fehlermeldung bei falscher Berechnung anzeigen Java Basics - Anfänger-Themen 31
N RegEx Wort anzeigen Java Basics - Anfänger-Themen 6
J JPG in einem Label einfügen und anzeigen lassen Java Basics - Anfänger-Themen 2
C JSlider und JRadioButton auf Label anzeigen? Java Basics - Anfänger-Themen 10
Y MenuBar in Application anzeigen Java Basics - Anfänger-Themen 7
B Alle Benutzer anzeigen Java Basics - Anfänger-Themen 17
B Applet anzeigen Java Basics - Anfänger-Themen 9
N Verschiedene JFrames in einem JFrame anzeigen Java Basics - Anfänger-Themen 7
A JPEG anzeigen Java Basics - Anfänger-Themen 3
L Webseiten anzeigen Java Basics - Anfänger-Themen 4
P OOP Statisitik anzeigen Java Basics - Anfänger-Themen 9
Zettelkasten Applet anzeigen ? Java Basics - Anfänger-Themen 5
T Vector-Positin anzeigen Java Basics - Anfänger-Themen 3
C Zellen in einer JTable nicht anzeigen lassen Java Basics - Anfänger-Themen 3
I JFrame anzeigen Java Basics - Anfänger-Themen 9
M JTree ohne root anzeigen Java Basics - Anfänger-Themen 5
M Aus CSV-Datei lesen und anzeigen (bitte schnell um Antwort) Java Basics - Anfänger-Themen 6
G Inhalt Jar-Files anzeigen, incl. Methoden Java Basics - Anfänger-Themen 2
I Liste von Dateien anzeigen/JTree Java Basics - Anfänger-Themen 4
S Toggle Button Array zum anzeigen auf GUI Java Basics - Anfänger-Themen 17
StrikeTom Quelltext einer Internetseite auf JTextArea anzeigen Java Basics - Anfänger-Themen 4
F.A Development In Projekt vorhandenes 2. Fenster anzeigen Java Basics - Anfänger-Themen 19
B Textlänge anzeigen Java Basics - Anfänger-Themen 10
J Tabelle in Fenster anzeigen Java Basics - Anfänger-Themen 12
A Halb gefüllten Array anzeigen lassen Java Basics - Anfänger-Themen 7
aze NullpointerException :Null Referenz anzeigen lassen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben