Aufgabe: Koordinaten im Koordinatensystem ausgeben

Joose

Top Contributor
Dir fällt nicht auf das die äußere Schleife zwar immer wieder betreten wird, die innere Schleife aber nach den ersten beiden Ausgaben nie wieder betreten wird?
 

Lestas89

Bekanntes Mitglied
Doch! Das ist mir aufgefallen. Ich verstehe aber nicht wieso. Dort steht doch while(1 <= 2) nach den ersten zwei Durchgängen der inneren Schleife.
 

Joose

Top Contributor
Dort steht doch while(1 <= 2) nach den ersten zwei Durchgängen der inneren Schleife.
Nein eben nicht! Wie kommst du auf <=2?
Die Bedingung der inneren Schleife lautet i<=n und n hat den Wert 1

Hier nochmal die Bedingungen der inneren Schleife:
Code:
...
i=0, j=0   while_i 0<=1?
...
i=1, j=0   while_i 1<=1?
...
i=2, j=0   while_i 2<=1?
...
i=2, j=1   while_i 2<=1?
....
i=2, j=2   while_i 2<=1?
 

Lestas89

Bekanntes Mitglied
Jetzt versteh ich das. Ich darf While-Schleifen anscheinend nicht so verschachteln wie ich das getan habe.
Aber wie muss die Verschachtelung dann genau aussehen? Ich verlange wirklich keine Komplettlösung für die While-Schleife aber so langsam weiß ich wirklich nicht mehr weiter Joose :D
 

Joose

Top Contributor
Ich darf While-Schleifen anscheinend nicht so verschachteln wie ich das getan habe
Natürlich die Verschachtelung passt eigentlich, man muss eben nur aufpassen wo man die Zählervariablen initialisiert und erhöht.

Hier nochmal die Anleitung von @VfL_Freak wie man eine for-Schleife in eine while-Schleife umwandeln kann:

Java:
for( int i = 3; i < 10; i++ )
{
  // irgendwas
}
// ----------------------------
int j = 3;
while( j < 10 )
{
   // irgendwas
   j++;
}
 

Lestas89

Bekanntes Mitglied
Danke euch beiden. @VfL_Freak : Den oberen Link hatte ich schon gefunden. Meine While-Schleife ist doch genau so verschachtelt wie in dem Link und trotzdem klappt es nicht.

@Joose :

Diesen Code hier versteh ich ja. Das kann ich.

Java:
for( int i = 3; i < 10; i++ )
{
  // irgendwas
}
// ----------------------------
int j = 3;
while( j < 10 )
{
   // irgendwas
   j++;
}

aber wie würde das aussehen für:


Java:
  for(int i = 0; j <= m; j++){
       for(int i = 0; i <= n; i++){
          // irgendwas
       }
     }
 
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
Genau wie beim ersten Beispiel, das du verstehst, nur das die variable und schleife bei "//irgendwas" nochmal drinnen steht.
 

InfectedBytes

Top Contributor
du musst einfach das gleiche Prinzip mehrmals anwenden. Am besten einfach Schritt für Schritt.
Lass die äußere Schleife erstmal wie sie ist und wandele nur die innere Schleife um. Danach wandelst du dann noch die äußere um.

Ansonsten hast du dort noch einen Fehler. Bei beiden Schleifen definierst du die Variable int i
eins davon sollte schon einen anderen Namen haben.
 

Lestas89

Bekanntes Mitglied
Sorry ich meinte natürlich

Java:
  for(int j = 0; j <= m; j++){
       for(int i = 0; i <= n; i++){
          // irgendwas
       }
     }

aber das irgendwas entspricht doch bei mir meiner inneren Schleife. Muss ich dort irgendetwas anders positionieren?

Java:
int j = 0;
        int i = 0;

        while( j <= m ){
      
            while( i <= n){
          
            i++;
            ausgabe += " \t " + " ("+i+","+j+") \t";
          
            }
        j++;
      
        }
 

Joose

Top Contributor
Mache es doch so wie InfectedBytes gesagt. Wandle zuerst die inner-Schleife um, und dann erst die äußere.
Java:
for(int j = 0; j <= m; j++) {
   int i = 0;
   while(i <= n) {
     // irgendwas
     i++;
   }
}

Ich hab die innere schon umgewandelt, mach es nun mit der äußeren und vielleicht fällt dir dann der Fehler auf ;)
 
Zuletzt bearbeitet:

Lestas89

Bekanntes Mitglied
So: Ich glaube ich habe jetzt das Schlimmste schonmal hinter mir: int i gleich 0 gehört in die Schleife, das war die Krux, oder?

Java:
    int j = 0;
        while( j <= m ){
       
            int i = 0;
            while( i <= n){
            i++;
            ausgabe += " \t " + " ("+i+","+j+") \t";
            }
           
        j++;
       
        }

Ich bekomme nun 6 Ausgaben für n gleich 1 und m gleich 2 allerdings stimmen die Zahlenwerte noch nicht. Was muss ich korrigieren?
 

Lestas89

Bekanntes Mitglied
Danke für den Hinweis. Jetzt bin ich wirklich fertig:

Java:
int j = 0;
while (j <= m) {
 int i = 0;
 while (i <= n) {
  ausgabe += " \t " + " (" + i + "," + j + ") \t";
  i++;
 }
 j++;
}

Vielen vielen Dank für die Geduld mit mir :D!
 
Zuletzt bearbeitet von einem Moderator:
X

Xyz1

Gast
tl;dr

Meiner Meinung nach, muss das genau so aussehen,:
Java:
    public static void main(String[] args) {
        int n = 7, m = 5; // Ausdehnung in x-Richtung und in y-Richtung
        for (int y = 0; y <= m; y++) {
            for (int x = 0; x <= n; x++) {
                System.out.print("(" + x + "," + y + ") ");
            }
            System.out.println("");
        }
    }

Code:
(0,0) (1,0) (2,0) (3,0) (4,0) (5,0) (6,0) (7,0) 
(0,1) (1,1) (2,1) (3,1) (4,1) (5,1) (6,1) (7,1) 
(0,2) (1,2) (2,2) (3,2) (4,2) (5,2) (6,2) (7,2) 
(0,3) (1,3) (2,3) (3,3) (4,3) (5,3) (6,3) (7,3) 
(0,4) (1,4) (2,4) (3,4) (4,4) (5,4) (6,4) (7,4) 
(0,5) (1,5) (2,5) (3,5) (4,5) (5,5) (6,5) (7,5)

Das ist == dem Beispiel.

while-Schleife und Eingabe müsstest du jetzt selbst zimmern. :D
 

Neue Themen


Oben