# Keil von Sternen ausgeben!



## f145h (17. Jul 2007)

die Frage lautet:
Schreiben Sie ein Programm, das Sterne in Keilform ausgibt. Der Anwender gibt die Anfangszahl für die Sterne ein und das Programm gibt Zeilen von Sternen aus, wobei jede Zeile einen Stern weniger hat als die vorhergehende. 

Anfangszahl der Sterne:
7

*******
******
*****
****
***
**
*



```
int   a,n;
	  String b;
	  
	    
	    
	    System.out.println( "Geben Sie die Anfangszahl ein" );
	    inputData = userIn.readLine();
	    a     = Integer.parseInt(inputData);
	  
	    while(n<a)
	    {	b=("*");
	    	System.out.println(????);
	    	n++;
	    }
```

ab hier komme ich nicht weiter!

Danke


----------



## SlaterB (17. Jul 2007)

in deiner while-Schleife brauchst du eine for-Schleife, die n-mal einen Stern ausgibt,
wichtig: verwende z.T. System.out.print(),
bei println() hast du sofort einen Zeilenumbruch,

da ich stark annehme, dass das immer noch viel zu hoch für dich,
mache erstmal folgende Aufgaben:

a)
ein Programm, das genau einen Stern * ausgibt
b)
ein Programm, das genau 30 Sterne * in einer einzelnen Zeile ausgibt
(mit einer Schleife bis 30, nicht  System.out.println("***************...");  )
b)
ein Programm, das genau 30 Sterne * in 30 Zeilen untereinander ausgibt (in jeder Zeile einen Stern * )
(mit einer Schleife bis 30)
b)
ein Programm, das genau 900 Sterne * in 30 Zeilen a 30 Sterne ausgibt
(mit zwei Schleifen bis 30)
c.)
ein Programm, das genau n Sterne * in einer Zeile ausgibt (n vom User einlesen)

erst wenn du einiges davon beherrschst kann man über deine aktuelle Aufgabe gezielter nachdenken


----------



## f145h (17. Jul 2007)

a) 
ein Programm, das genau einen Stern * ausgibt 

System.out.print("*");


b) 
ein Programm, das genau 30 Sterne * in einer einzelnen Zeile ausgibt 
(mit einer Schleife bis 30, nicht System.out.println("***************...");  ) 

int a = 0;

	    while(a<30)
	    {	
	    	System.out.print("*");
	    	a++;
	    }
b) 
ein Programm, das genau 30 Sterne * in 30 Zeilen untereinander ausgibt (in jeder Zeile einen Stern * ) 
(mit einer Schleife bis 30) 
int a = 0;

	    while(a<30)
	    {	
	    	System.out.println("*");
	    	a++;
	    }

b) 
ein Programm, das genau 900 Sterne * in 30 Zeilen a 30 Sterne ausgibt 
(mit zwei Schleifen bis 30) 
*sorry aber nur mit 2 schleifen kriege ich das nicht hin hast du vielleicht ei Tipp für mich???*

c.) 
ein Programm, das genau n Sterne * in einer Zeile ausgibt (n vom User einlesen) 


	  int   a=0,n;




	    System.out.println( "Geben Sie n ein" );
	    inputData = userIn.readLine();
	    n     = Integer.parseInt(inputData);

	    while(a<n)
	    {	
	    	System.out.print("*");
	    	a++;
	    }


----------



## madboy (17. Jul 2007)

kleiner Tip:
verwende nicht while-Schleifen, sondern for-Schleifen wie diese (und wie schon gesagt wurde):

```
int x = 30;
for (int i = 0; i < x; i++) {
  //Ausgabe
}
```
Dann wird das mit "zwei Schleifen" einfacher bzw. übersichtlicher.

Edit:
deine zweite schleife muss da hin, wo "Ausgabe" steht. Hoffe, ich hab den Ratespaß nicht kaputt gemacht...


----------



## f145h (17. Jul 2007)

wow Danke dir es funktioniert allerdings eine zeile  und ei Stern zuwenig
Ausgabe:

```
*
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
*******************************
******************************
```


```
int x=30;
	  
	    for (int i = 0; i < x; i++) { 
	    	System.out.println("*");
	    	 for (int j = 0; j < x; j++){
	    		 System.out.print("*");
	    	 }
```


----------



## Guest (18. Jul 2007)

f145h hat gesagt.:
			
		

> eine zeile und ei Stern zuwenig


Zwei Mal darfst raten, was man da machen könnte (es gibt übrigens auch zwei Möglichkeiten, also gute Chancen) :wink: 

Ich habe nochmal ein paar (recht allgemeine) Tips für dich:
benutze eine Suchmaschine
benutze die Forensuche
lies in http://www.galileocomputing.de/openbook/javainsel/

verändere die for-Schleife. Es gibt vier Möglichkeiten, in einer for-Schleife zu zählen.
1. vorwärts zählen, so lange der Index kleiner als irgendwas ist
2. vorwärts zählen, so lange der Index kleiner oder gleich als irgendwas ist
3. rückwärts zählen, so lange der Index kleiner als irgendwas ist
4. rückwärts zählen, so lange der Index kleiner oder gleich als irgendwas ist

mache dir klar, was eine for-Schleife überhaupt genau macht und warum.

```
for (int i = 0; i < 10; i++) {
  System.out.println(i);
}
```


----------



## madboy (18. Jul 2007)

Verflixt. War nicht eingeloggt...

*Korrektur:*
verändere die for-Schleife. Es gibt vier Möglichkeiten, in einer for-Schleife zu zählen. 
1. vorwärts zählen, so lange der Index kleiner als irgendwas ist 
2. vorwärts zählen, so lange der Index kleiner oder gleich als irgendwas ist 
3. rückwärts zählen, so lange der Index *größer* als irgendwas ist 
4. rückwärts zählen, so lange der Index *größer* oder gleich als irgendwas ist


----------



## SlaterB (18. Jul 2007)

also so lange und ausführlich wollte ich dich gar nicht von der ursprünglichen Aufgabe abhalten 

da nun eine for-Schleife, die die aktuelle Zeile füllt,

und beim Zeilenumbruch nicht unbedingt noch einen Stern mit ausgaben,
System.out.println();  geht auch oder wenn es nicht ginge dann System.out.println("");


----------

