Probleme bei einer Aufgabe

Griesfrei

Mitglied
Hallo liebes Forum,

ich bin gerade am Java lernen und soll ein Programm schreiben welches den Nutzer abfragt wie viele Zeilen und wie viele Sterne er "haben will" als Beispiel Nutzer gibt 5 Zeilen und 6 Sterne ein: Es werden 5 Zeilen a 6 Sterne ausgegeben.
Ich habe den Code geschrieben und es hat nicht geklappt. hier der Code:
Java:
import java.util.Scanner;

class Test
{
 public static void main ( String[] args)
 {
     Scanner scan=new Scanner ( System.in );
     int anzahlZeile, anzahlSterne, zeile, sterne;
	 
	 System.out.println("Geben sie die Anzahl der Sterne an: ");
	 anzahlSterne=scan.nextInt();
	 
	 System.out.println("Geben sie die Anzahl der Zeilen an: ");
	 anzahlZeile=scan.nextInt();
	 
 	 sterne=1;	
	 zeile=1;
	 
	 while ( zeile<=anzahlZeile ){
	 
	     while ( sterne<=anzahlSterne ){

	     System.out.print("*");
	     sterne=sterne+1;
	     }
	  System.out.println(); 
	 
	 zeile=zeile+1;	 
	 }
 }
}

Nach langem nachdenken hab ich noch immer nicht das Problem gelöst und schliesslich mir die Lösung angeschaut:

Java:
import java.util.Scanner;

class Sternchen
{
  public static void main (String[] args )
  {
    int anzahlZeilen;    // die Anzahl der Zeilen
    int anzahlSterne;    // die Anzahl der Sterne pro Zeile
    int zeile;           // aktuelle Zeilennummer
    int stern;           // die Anzahl der Sterne in dieser Zeile soweit

    Scanner scan = new Scanner( System.in );

    // Input vom Anwender sammeln
    System.out.println( "Wie viele Zeilen?" );
    anzahlZeilen = scan.nextInt();

    System.out.println( "Wie viele Sterne pro Zeile?" );
    anzahlSterne = scan.nextInt();

    zeile  =  1;
    while ( zeile <= anzahlZeilen )
    {
      stern = 1;
      while ( stern <= anzahlSterne )
      {
        System.out.print("*");
        stern = stern + 1;
      }

      System.out.println();         // notwendig, um jede Zeile zu beenden
      zeile = zeile + 1;
    }
  }
}

Der einzige wirkliche Unterschied ist ja das die Variable stern in der Schleife deklariert wird. Nur verstehe ich einfach nicht wieso. Kann mir bitte jemand erklären warum das so gemacht werden muss ?

Falls ich mich unklar mit meiner Frage ausgedrückt habe, bitte einfach sagen 🙂

Gruss Griesfrei
 
Zuletzt bearbeitet:
Beim "Sprung in die nächste Zeile", sprich beim nächsten Durchlauf der äußeren while-Schleife wird dir somit immer eine neue Variable mit dem Namen stern erzeugt und auf 1 gesetzt. Bei deiner Variante behält die Variable stern immer den Wert "anzahlsterne +1" und daher wird ab der zweiten Zeile gar nicht mehr in die innere while-Schleife gesprungen.
 

Zurück
Oben