Hallo liebe Java Gemeinde, ich stehe vor einem Rätzel, entweder die Aufgabe ist richtig oder ich blix nicht.oder beides ;-)
bin absoluter java und programmierneuling.
Also ich mache eine Klasse stern und dazu eine public main prozedur.
die brauch ich ja damit es lauffähig wird, war in der aufgabestellung so nicht implemtiert.
innen drin zwei verschachtelte while schleifen.
wieviele Sterne bringt das Programm ?
mein (bisher) <logischer> Lösungsansatz:
public class stern
{
public static void main(String[] args)
{
int i, j, k ;
i = 0;
while (i<=100)
//da i erstmal NULL ist läuft diese while schleife solange bis sie 99 ist, also hundert mal.
{
j = 52;
while (j < i)
// j ist erstmal NICHT kleiner als i, also kommt der Stern, also mind. 52 mal.
{
System.out.print('*');
j++;
}
i++;
}
}
}
das kann ja sicher nicht die lösung sein ?also die 1176 oder
Zur ersten while-Schleife:
Diese wird 100mal durchlaufen, nicht wie von dir vermutet 99 mal - von 0 bis einschließlich 100 da "<="(->kleiner gleich).
Zur zweiten while-Schleife:
Da "j" in der ersten Schleife ständig neu gesetzt wird, wird die while-Schleife bei jedem erhöhen von "i"(sofern i > 52) einmal mehr durchlaufen als zuvor. Dies bedeutet das die Schleife im ersten durchlauf einmal, beim letzten durchlauf 48mal durchlaufen wird. Somit stimmen die 1176 Sternchen.
// und ich habe mir auch nen Zaehler eingebaut, das Sternchenzaehlen ist uncool
// aber wie in alles in der Welt bitte soll man das rausbekommen ohne das programm zu schreiben ?
// dass sollte ne Übungsaufgabe OHNE Programmieren sein.....
Ja, ich versuch das ja . aber ich komm nicht auf die 1176
das ist ja mein Problem.
Die erste schleife 100 mal ist klar.
die zweite schleife erhöht sich ab i= 52 48 mal, dann steht die erste schleife auf 100 und alles ist vorbei.
ich kann rechnen wie ich will, ich komme nicht auf 1176
Dann versuche ich es mal genauer zu erklären, das ganze läuft wie folgt ab:
Angenommen i ist schon auf 51(vorher passiert sowieso nichts):
Java:
while(i <=100){// i ist 51, somit kleiner gleich 100
j =52;while(j < i){// j ist 52, somit wird diese Schleife übersprungen (j ist größer i)System.out.print('*');
j++;}
i++;// i wird auf 52 gesetzt}
Java:
while(i <=100){// i ist 52, somit kleiner gleich 100
j =52;while(j < i){// j ist 52, somit wird diese Schleife übersprungen (j ist gleich i)System.out.print('*');
j++;}
i++;// i wird auf 53 gesetzt}
Java:
while(i <=100){// i ist 53, somit kleiner gleich 100
j =52;while(j < i){// j ist 52, somit wird diese Schleife zum ersten mal ausgeführt (1 durchlauf)System.out.print('*');
j++;}
i++;// i wird auf 54 gesetzt}
Java:
while(i <=100){// i ist 54, somit kleiner gleich 100
j =52;while(j < i){// j ist 52, somit wird diese Schleife erneut ausgeführt (2 durchläufe)System.out.print('*');
j++;}
i++;// i wird auf 54 gesetzt}
...
Java:
while(i <=100){// i ist 100, somit kleiner gleich 100
j =52;while(j < i){// j ist 52, somit wird diese Schleife erneut ausgeführt (48 durchläufe)System.out.print('*');
j++;}
i++;// i wird auf 101 gesetzt}