Java :: Aufgabe #16

2 Lösungen Lösungen öffentlich

Ausgabe Weihnachtsbaum

Anfänger - Java von Gustl - 07.12.2012 um 18:44 Uhr
Schreiben Sie ein Konsolenprogramm welches einen Weihnachtsbaum ausgibt.
Vor der Ausgabe soll noch die Höhe des Weihnachtsbaum abgefragt werden. (MIN 3)
Der Weihnachtsbaum soll bei einer Höheneingabe von 10 folgendermaßen aussehen:

Konsolenausgabe:

      *
***
*****
***
*****
*******
*****
*******
*********
###


Die Schwierigkeit besteht in den Stufenabschnitten der Tanne. Die Zeile die die meisten Sterne enthält sollte natürlich dann auch die letzte sein, also muss das Programm vielleicht bei einer zu großen Höheneingabe das Zeichnen der Sterne abbrechen und dann den Stamm ausgeben. (So wie bei diesem Beispiel, angegeben ist 10 aber der Baum hat nur 10 Reihen, ohne Baumstamm)

Lösungen:

vote_ok
von javamike1985 (60 Punkte) - 12.12.2012 um 20:45 Uhr
Quellcode ausblenden Java-Code
package eu.michaelh.weihnachtsbaum;


import java.util.Scanner;

/**
 *
 * @author javamike1985
 */
public class Weihnachtsbaum {

    private String[] aeste = {
        "      *",
        "     ***",
        "    *****",
        "   *******",
        "  *********",};
    
    static int maxBaumreihen = 10;

    public int eingabe() {
        int eingabe;
        try (Scanner in = new Scanner(System.in)) {
            eingabe = in.nextByte();
        }
        return eingabe;
    }

    public void baumErstellen(int eingabe) {

        for (int i = 0; i < 3; i++) {
            System.out.println(aeste[i]);
        }
        
        for (int i = 1; i < 4; i++) {
            System.out.println(aeste[i]);
        }
        
        for (int i = 2; i < 5; i++) {
            System.out.println(aeste[i]);
        }
        
        int rest = eingabe - maxBaumreihen;
        for(int i = 0; i < rest; i++ ) {
            System.out.println("     ###");
        }

    }
}
vote_ok
von The_Dive (90 Punkte) - 25.08.2014 um 00:17 Uhr
Quellcode ausblenden Java-Code
package bla.wrigley.de;

import java.util.Scanner;

public class Klasse1 {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner (System.in);
		
		System.out.println("Bitte geben sie die höhe des tannenbaumes ein.");
		int hoehe = scan.nextInt();
		
		int abschnitte = hoehe/3;//ermitteln wieviele Abschnitte gemacht werden sollen.
		
		int abstandZurMitte = 2+abschnitte;
		
		//Es ist schwer zu erklären aber im grunde funktioniert es so, dass immer ein Abschnitt nach dem anderen des Tannenbaums generiert werden.
		
		for(int i = 0; i< abschnitte; i++){//die erste for-Schlaufe ist für die Abschnitte...
			
			for(int j = 0; j < 3;j++){//...und die zweite dann für die 3 Reihen jedes Abschnittes.
				
				switch (j){
				case 0://case 0 ist immer die erste reihe in einem Abschnitt, case 1 die Zweite und dann natürlich case 2 die Dritte.
					for(int k = 0;k < 1+abschnitte-i; k++){//zuerst wird der abstand bis zum ersten stern berechnet...
						System.out.print(" ");
					}
					for(int k = 0; k < 1+i*2;k++){//und dann wieviel Sternchen folgen müssen.
						System.out.print("*");
					}
					System.out.println("");//wenn die reihe fertig ist wird ein Zeilenumsprung gemacht.
					break;
				case 1://case 1 und 2 sind im grunde wie case 0 aufgebaut.
					for(int k = 0;k < abschnitte-i; k++){
						System.out.print(" ");
					}
					for(int k = 0; k < 1+(i+1)*2;k++){
						System.out.print("*");
					}
					System.out.println("");
					break;
				case 2:
					for(int k = 0;k < abschnitte-i-1; k++){
						System.out.print(" ");
					}
					for(int k = 0; k < 1+(i+2)*2;k++){
						System.out.print("*");
					}
					System.out.println("");
					break;
				}
			}
		}
		//nochmal der Baumstumpf.
		
		for(int k = 0;k < 2; k++){
		System.out.print(" ");
		}
		for(int k = 0; k < 1+(abschnitte-1)*2;k++){
		System.out.print("#");
		}
	}
}