Hallo, Java Forum!
Ich habe die Aufgabe bekommen einen Weihnachtsbaum mit Hilfe von java-Schleifen zu visualisieren. Dies soll über die Eingabe der Höhe erfolgen und abhängig von dieser auch einen Stamm hinzufügen.(siehe Anhang)
Dabei sind folgende Klassen vorgegeben:
bisher hab ich folgendes und kann damit die Äste darstellen, scheitere aber daran noch den Baumstamm in die Schleife einzubauen. Ich hoffe ihr könnt mich in die richtige Richtung leiten.
Ich habe die Aufgabe bekommen einen Weihnachtsbaum mit Hilfe von java-Schleifen zu visualisieren. Dies soll über die Eingabe der Höhe erfolgen und abhängig von dieser auch einen Stamm hinzufügen.(siehe Anhang)
Dabei sind folgende Klassen vorgegeben:
Java:
package edu.hm.cs.swe1;
import javax.swing.JFrame;
import edu.hm.cs.swe1.christmastree.ChristmasTree;
public class Main extends JFrame {
private static final long serialVersionUID = -7793153788995243551L;
/**
* Main Method to start up the Christmas tree creator. No arguments are
* required.
*
* @throws Exception
*/
public static void main(String[] args) throws Exception {
int height = HelperClass.requestUserInput("Wie hoch ist der Weihnachtsbaum?");
ChristmasTree tree;
if (height < 3) {
throw new RuntimeException("Error: Tree must be greater than 2!");
}
tree = new ChristmasTree(height);
System.out.println(tree.toString());
}
}
Java:
package edu.hm.cs.swe1;
import java.awt.Font;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class HelperClass {
/**
* Request some user information and transform it into an int-value.
*
* @param question Question the user is asked
* @return The user's reply, transformed into an int-value.
*/
public static int requestUserInput(String question) {
// Request user to input information about smiley
String answer = JOptionPane.showInputDialog(question);
// Transform textual answer into int-value
int result = Integer.parseInt(answer);
// Return result to caller
return result;
}
/**
* Displays some output in its own JFrame. That frame can be closed by clicking Escape.
* @param text The text to show in the JFrame.
*/
public static void showOutput(String text) {
final JFrame outputFrame = new JFrame("Output");
text = text.replaceAll(" ", " ");
JLabel frameText = new JLabel("<html><body>" + text.replaceAll("\n", "<br>") + "</body></html>");
outputFrame.add(frameText);
outputFrame.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent ke) {
if(ke.getKeyCode() == KeyEvent.VK_ESCAPE) {
outputFrame.setVisible(false);
outputFrame.dispose();
}
}
});
outputFrame.pack();
outputFrame.setVisible(true);
}
/**
* Print error message in separate window
*
* @param message Error message
*/
public static void printErrorMessage(String message) {
JOptionPane.showMessageDialog(null, message, "Fehlermeldung", JOptionPane.ERROR_MESSAGE);
}
/**
* Wait for a specified number of milliseconds before finishing.
* This provides an easy way to specify a small delay which can be
* used when producing animations.
* @param milliseconds the number
*/
public static void wait(int milliseconds)
{
try
{
Thread.sleep(milliseconds);
}
catch (Exception e)
{
// ignoring exception at the moment
}
}
}
bisher hab ich folgendes und kann damit die Äste darstellen, scheitere aber daran noch den Baumstamm in die Schleife einzubauen. Ich hoffe ihr könnt mich in die richtige Richtung leiten.
Java:
package edu.hm.cs.swe1.christmastree;
public class ChristmasTree {
int height;
int trunk;
int width;
public ChristmasTree(int height) {
for (int i = 0; i < height; i++) {
for (int j = 1; j < height - i; j++) {
System.out.print(" ");
}
for (int k = 0; k < (2 * i + 1); k++) {
System.out.print("*");
}
System.out.println();
}
}
}