# Problem mit einem Java Porgramm!



## Bodo1981 (3. Jun 2005)

Schreiben Sie ein Programm, das einen Baum aus Sternen auf den Bildschirm ausgibt: 

             *
           ***
         *****
        *******
      *********
    ***********
  *************
***************    <-- Breite
           ***
           ***
           ***

Kann mir bitte jemand den kompletten Quelltext schreiben, indem nach der Breite des Baumes
gefragt wird und das Programm dann mit Hilfe von Schleifen diesen Baum ausgibt.

Danke schonmal im voraus

MIt freundlichen Grüßen


----------



## Sky (3. Jun 2005)

@mod: bitte nach Aufgaben und Gesuche schieben

@Bodo: ich denke nicht, dass Du mit deiner Anfrage hier viel Glück hast...


----------



## stev.glasow (3. Jun 2005)

*vorschoben*
Komplette Hausaufgaben werden hier nicht gelöst.


----------



## mic_checker (3. Jun 2005)

Poste doch mal womit du Probleme hast.

Weisst du nicht wie man etwas von der Tastatur einliest ?
Hast du keinen Ansatz wie man das mit den Sternen macht ?
etc. pp. 

Ansonsten wird das keiner hier für dich machen.


----------



## Shrike (3. Jun 2005)

Also die Spitze des Baumes geb ich dir den Rest musste selber machen...


```
System.out.println("*");
```

 :wink:


----------



## gizmo (3. Jun 2005)

Womit hast du Probleme? Mit dem Algorithmus, mit der Syntax oder mit der Motivation?


----------



## Gast (6. Jun 2005)

public  class Dreieck {

public  static  void main(String args[]  ){

for(int i=0;i<=10 ;i++ ) {
for(int j=0;j<=i ;j++ )
System.out.print("*");

 System.out.println();




}

}
 }// nur eine Idee


----------



## cs (6. Jun 2005)

Shrike hat gesagt.:
			
		

> Also die Spitze des Baumes geb ich dir den Rest musste selber machen...
> 
> 
> ```
> ...



die zweite zeile sieht dann so aus : System.out.println("**");


----------



## cs (6. Jun 2005)

die lösung vom gast ist wohl die klassische. ich habe es so gemacht

class Tannebaum
{
  static void main(String args[] )
  {
    int max_breite = 10;
    String str = "*";
    for( int i = 0; i < max_breite; i++ )
    {
      System.out.println(str);
      str = str + "*" ;
    }
    System.out.println("***\n***\n***");
  }
}


----------



## Illuvatar (6. Jun 2005)

cs, du scheinst ja, wie ich aus anderen Posts entnehman konnte, neu in Java zu sein. Deshalb hier mal der allerallerwichtigste Performance-Tip: Verwende nicht in einer Schleife den + - Operator auf Strings. Dadurch werden lauter unötige Objekte instanziiert und dein Speicherverbrauch geht hoch (natürlich bei den 10  hier noch nicht so sehr  ). Das liegt daran, dass String immutable ist, deshabl wandelt der Compiler das von dir da oben sowas in der Art von dem hier um:

str = new StringBuffer (str).append ("*").toString();

Also lieber gleich einen StringBuffer, bzw. ab Java 5 noch besser StringBuilder verwenden


----------



## insomnia (6. Jun 2005)

```
public class Dreieck {

public static void main(String args[] ){

int max_breite = 15; // Anzahl der maximalen Sternchen 

for(int i=0;i<=20 ;i=i+2 ) {
for(int j=0;j<=i ;j++ ) {
	if (i<=max_breite)	
		System.out.print("*");
 	else {
		System.out.print("***");
		break;
		}
	}	
System.out.println();
}
}
}
```


----------



## Bastian (2. Jul 2005)

insomnia hat gesagt.:
			
		

> ```
> public class Dreieck {
> 
> public static void main(String args[] ){
> ...



Verbesserte Version:


```
import java.io.*;
public class Baum {

public static void main(String args[] )throws IOException{

  BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in));

  System.out.println("Bitte Baumbreite eingeben:");
  int max_breite = Integer.parseInt(stdin.readLine()); // Anzahl der maximalen Sternchen

  for(int i=0;i<=max_breite+6 ;i=i+2 ) {
          for(int j=0;j<=i ;j++ ) {
          if (i<=max_breite)
            System.out.print("*");
            else {
             System.out.print("***");
              break;
               }
            }
               System.out.println();
          }
  }
}
```


----------

