# Aufgabe: Koordinaten im Koordinatensystem ausgeben



## Lestas89 (12. Apr 2016)

Hallo  Bin gerade an folgender Aufgabe dran (Siehe Bild)

Ich soll die einzelnen Koordinaten des aufgespannten Rechtecks wiedergeben.
Ich hab es wie folgt versucht:


```
import javax.swing.JOptionPane;

class Koordinatensystem{
    public static void main(String [] args){
       
        String ausgabe = "";
        String ersteEingabe = JOptionPane.showInputDialog("Geben Sie eine Zahl n im Koordinatensystem ein:");
        String zweiteEingabe = JOptionPane.showInputDialog("Geben Sie eine zweite Zahl m im Koordinatensystem ein:");
       
        int n = Integer.parseInt(ersteEingabe);
        int m = Integer.parseInt(zweiteEingabe);
       
        for(int i = 0; i <= n; i++){
            for(int j = 0; j <= m; j++){
                ausgabe += " \t " + " ("+i+","+j+") \t";
            }
        }
        JOptionPane.showMessageDialog(null, ausgabe);
   
    }
}
```

Ich bekomme zwar die richtigen Werte raus, allerdings nicht in der Reihenfolge wie in der Aufgabenstellung im Beispiel angegeben ist. Was mach ich falsch?


----------



## Joose (12. Apr 2016)

Falsch machst du gar nicht. Die Reihenfolge deiner Ausgabe ist nicht unbedingt wichtig (meiner Meinung nach), solange du die richtigen 6 Punkte bekommst 

Das Problem warum deine Ausgabe anders auschaut: Dei Reihenfolge deiner Schleifen.


----------



## Lestas89 (12. Apr 2016)

Hallo Joose,

danke für deine schnelle Antwort. Wie müsste ich die Schleife verändern um auf das gleiche Ergebnis wie im Beispiel zu kommen?


----------



## Joose (12. Apr 2016)

Lestas89 hat gesagt.:


> Wie müsste ich die Schleife verändern um auf das gleiche Ergebnis wie im Beispiel zu kommen?


Hab ich doch schon geschrieben.


Joose hat gesagt.:


> Dei Reihenfolge deiner Schleifen.



Würden die beiden Schleifen hintereinander laufen, müsstest du einfach nur die eine nach der anderen schreiben.
Sind die beiden Schleifen verschachtelt, dann muss die innere stattdessen eben die äußere sein 

Schon ist die Reihenfolge der Schleifen geändert.


----------



## Lestas89 (12. Apr 2016)

Dann muss ich doch eigentlich nur m und n miteinander vertauschen oder? Aber dann klappt es auch nicht


----------



## Joose (12. Apr 2016)

Lestas89 hat gesagt.:


> Dann muss ich doch eigentlich nur m und n miteinander vertauschen oder?



Nein eben nicht. Die Schleifen beinhalten ja auch Zählervariablen (i bzw. j) diese bleiben ja sonst unverändert.
Also entweder die kompletten Schleifenköpfe vertauschen oder wie du es probiert hast nur m und n vertauschen, dann musst du in der Ausgabe aber auch i und j vertauschen


----------



## Lestas89 (12. Apr 2016)

Es funktioniert! Vielen Dank 

Edit: Wenn ich das mit while Schleifen machen möchte, muss ich diese auch verschachteln?


----------



## Lestas89 (12. Apr 2016)

Mit der while Schleife hab ich es so probiert. Aber es kommt einfach keine Ausgabe:


```
int j = 0;
        int i = 0;
      
        while(j <= m){
        j = 0;
        j++;
      
        while(i <= n){
        i = 0;
        i++;
      
        ausgabe += " \t " + " ("+i+","+j+") \t";
      
        }
      
        }
        JOptionPane.showMessageDialog(null, ausgabe);
```

Wo liegt mein Fehler?


----------



## VfL_Freak (12. Apr 2016)

Moin,

Klar   die machen ja letztlich beide das Gleiche, nur dass die Bedingungen anders formuliert werden !!

Gruß Klaus


----------



## Lestas89 (12. Apr 2016)

Kann mir jemand nochmal helfen:

Diese Schleife hier gibt nicht das gleiche aus wie die for-Schleife die ich oben programmiert habe mithilfe von Joose.

Wo liegt mein Fehler?

```
int j = 0;
        int i = 0;
       
        while(j <= m){
       
        j++;
       
        while(i <= n){
       
        i++;
       
        ausgabe += " \t " + " ("+i+","+j+") \t";
       
        }
       
        }
        JOptionPane.showMessageDialog(null, ausgabe);
    }
```


----------



## VfL_Freak (12. Apr 2016)

Lestas89 hat gesagt.:


> *while*(j <= m)


Stichwort: Endlos-Schleife !! 

Gruß Klaus


----------



## VfL_Freak (12. Apr 2016)

Lestas89 hat gesagt.:


> Diese Schleife hier gibt nicht das gleiche aus wie die for-Schleife


nee, ist doch klar ... sie sind halt NICHT verschachtelt!

Überleg' Dir mal (vlt. ganz einfach mit Papier und Bleistift) für beide Fälle was bei jedem Schleifendurch genau passiert - sprich: wie sich jeweils die Variabeln ändern!

Gruß Klaus


----------



## Lestas89 (12. Apr 2016)

Hallo VfL_Freak. Den Fehler mit der Endlosschleife habe ich bereits behoben. Es funktioniert trotzdem nicht so wie es sollte. Ich bekomme nur 2 Klammern ausgegeben:


```
int j = 0;
int i = 0;

while(j <= m) {
   j++;
   while(i <= n){
     i++;
     ausgabe += " \t " + " ("+i+","+j+") \t";
   }
}
JOptionPane.showMessageDialog(null, ausgabe);
}
```


----------



## Lestas89 (12. Apr 2016)

Wie meinst du das, dass die nicht verschachtelt sind? while( i <= n) ist doch in der while-Schleife drin. Das versteh ich nicht


----------



## VfL_Freak (12. Apr 2016)

Lestas89 hat gesagt.:


> Wie meinst du das, dass die nicht verschachtelt sind? while( i <= n) ist doch in der while-Schleife drin. Das versteh ich nicht


ja, nee, hab' ich falsch gesehen wegen der unschönen Formatierung ...


----------



## Lestas89 (12. Apr 2016)

Kannst du mir trotzdem weiterhelfen? Ich möchte das gleiche Ergebnis wie in der for-Schleife bekommen. Es funktioniert aber leider nicht.


----------



## VfL_Freak (12. Apr 2016)

Hast Du dir denn mal überlegt, WIE und WANN sich i und j in beiden Varianten ändern?

Im ersten Fall bekommst Du sechs Ergebnisse, im anderen nur zwei! 
Woran mag das liegen?

Gruß Klaus


----------



## Joose (12. Apr 2016)

Lestas89 hat gesagt.:


> Kannst du mir trotzdem weiterhelfen? ... Es funktioniert aber leider nicht.


Funktioniert nicht ist keine Fehlerbeschreibung. Du solltest genauer beschreiben: Welche Ausgabe erwartest du dir? Welche bekommst du stattdessen? Fliegt eine Exception, wenn ja Fehlermeldung + StackTrace posten.

Mache einen Schreibtischtest für diese beiden Schleifen, dann sollte dir klarer was passiert bzw. und wo ein Fehler ist.


----------



## Lestas89 (12. Apr 2016)

Habe ich die Inkrementierung an die falsche Stelle gepackt? Wenn ich die nach ausgabe mache würde ich mehr Ergebnisse bekommen aber immer noch nicht 6. Ich komm nicht darauf.


----------



## Meniskusschaden (12. Apr 2016)

Du inkrementierst deine Zähler vor der Ausgabe, also gibst du für 0 nie etwas aus.


----------



## VfL_Freak (12. Apr 2016)

Lestas89 hat gesagt.:


> Habe ich die Inkrementierung an die falsche Stelle gepackt?


Sowas kannst Du doch auch selbst auf die Schnelle ausprobieren .....


----------



## Lestas89 (12. Apr 2016)

Ich habe die Inkrementierung nun nach der ausgabe gepackt aber es funktioniert trotzdem noch nicht wie die for Schleife:


```
int j = 0;
int i = 0;

while(j <= m) {
   while( i <= n) {
     ausgabe += " \t " + " ("+i+","+j+") \t";
     i++;
   }
   j++;
}
JOptionPane.showMessageDialog(null, ausgabe);
```


----------



## VfL_Freak (12. Apr 2016)

Führe mal folgenden Code aus und schau Dir das Ergebnis an, vielleicht wird es denn klarer:

```
String ausgabe = "";
        int n = 1;
        int m = 2;
       
        for( int i = 0; i <= n; i++ )
        {
                for( int j = 0; j <= m; j++ )
                {
                    ausgabe += "(" + i + "," + j + ")\t";
                }
            }
        System.out.println( ausgabe );
        // ============================
            int j = 0;
            int i = 0;
            while( j <= m )
            {
          
                while( i <= n )
                {
                i++;
                System.out.println( " (" + i + ", " + j + ")" );
                }
               
                j++;
               
            }
            System.out.println( "DANACH: (" + i + ", " + j + ")" );
```


----------



## Meniskusschaden (12. Apr 2016)

Lestas89 hat gesagt.:


> Ich habe die Inkrementierung nun nach der ausgabe gepackt aber es funktioniert trotzdem noch nicht wie die for Schleife:


Ich würde wirklich mal den Schreibtischtest machen, den Joose empfohlen hat. Es ist nur noch eine kleine Korrektur nötig.


----------



## Lestas89 (12. Apr 2016)

Hallo Meniskusschaden,

ich versuch das nachzuverfolgen aber ich komme wirklich immer noch nicht darauf. Wie müsste ich den Code denn verändern?


----------



## Meniskusschaden (12. Apr 2016)

Ich würde den Schreibtischtest machen. Alle Variablennamen untereinander auf ein Blatt Papier schreiben und dann das Programm Zeile für Zeile durchgehen und für die Variable den entsprechenden Wert notieren. Wenn eine Variable sich mehrmals ändert, den alten Wert durchstreichen und den neuen daneben schreiben. Dann siehst du was passiert.


----------



## Lestas89 (12. Apr 2016)

Das hab ich gerade gemacht und kann meinen Fehler immer noch nicht nachvollziehen.
Ich geh das hier einmal durch:

bei Eingabe n = 1 und m = 2 steht dort folgendes:

while( 0 <=2){
        while( 0 <=1){

ausgabe += (i,j)
i++
}
j++
}

Die äußere Schleife müsste eigentlich 3 Durchgänge machen und die innere Schleife bis 1 hoch inkrementieren und das passiert ja nicht. Da liegt mein Verständnisproblem.


----------



## Meniskusschaden (12. Apr 2016)

```
n=1
m=2
i=0
j=0

i=0, j=0   while_j 0<=2?
i=0, j=0   while_i 0<=1?
i=0, j=0   ausgabe (0, 0)
i=0, j=0   i++  
i=1, j=0   while_i 1<=1?
i=1, j=0   ausgabe (1, 0)
i=1, j=0   i++
i=2, j=0   while_i 2<=1?
i=2, j=0   j++
i=2, j=1   while_j 1<=2?
i=2, j=1   while_i 2<=1?        
i=2, j=1   j++
i=2, j=2   while_j 2<=2?
i=2, j=2   while_i 2<=1?
i=2, j=2   j++
i=2, j=3   while_j 3<=2
```
Das geht wirklich viel besser auf dem Papier.


----------



## Lestas89 (12. Apr 2016)

Hallo Meniskusschaden,

ich danke für deine Antwort und Hilfe aber mittlerweile versteh ich garnichts mehr und bin nur noch durcheinander.

Ich glaube ich habe folgendes Problem:

Ich dachte, dass verschachtelte while Schleifen sich wie verschachtelte for Schleifen verhalten, doch das ist - wie mir gerade auffällt - mitnichten der Fall.

Wie sieht die Äquivalenz zwischen verschachtelten for und while Schleifen aus?
Ich denke das würde mir bei meinem Problem sehr behilflich sein.


----------



## VfL_Freak (12. Apr 2016)

Lestas89 hat gesagt.:


> while( 0 <=2){
> while( 0 <=1){


hmm ... 
Solange _Null kleiner irgendwas_ ???

Gruß Klaus


----------



## VfL_Freak (12. Apr 2016)

um mal gaaanz langsam anzufangen:

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

gruß Klaus


----------



## Meniskusschaden (12. Apr 2016)

Lestas89 hat gesagt.:


> Die äußere Schleife müsste eigentlich 3 Durchgänge machen und die innere Schleife bis 1 hoch inkrementieren und das passiert ja nicht. Da liegt mein Verständnisproblem.


Ich kann nur wiederholen: mach den Schreibtischtest. Und zwar für alle Iterationen. "Müßte eigentlich" bringt nichts, for-while-Äquivalenz auch nicht. Du mußt dir den tatsächlichen Durchlauf ansehen. Sonst bleibt es nur Theorie.


----------



## Joose (12. Apr 2016)

Lestas89 hat gesagt.:


> ich danke für deine Antwort und Hilfe aber mittlerweile versteh ich garnichts mehr und bin nur noch durcheinander.



Es wurde doch schön aufgeschrieben. Wo würde denn deiner Meinung nach noch die Ausgaben fehlen? Warum glaubst sind keine dort?



Lestas89 hat gesagt.:


> Ich dachte, dass verschachtelte while Schleifen sich wie verschachtelte for Schleifen verhalten, doch das ist - wie mir gerade auffällt - mitnichten der Fall.


Man kann jede while-Schleife in eine for-Schleife umschreiben und umgekehrt. Sprich es wäre vollkommen egal was man verwendet.
Ein gutes einfaches Beispiel dazu hat dir @VfL_Freak gezeigt. (einzig das "//irgendwas" vor "j++" gehört )


----------



## Lestas89 (12. Apr 2016)

Danke für die zahlreichen Antworten.

@ VfL_Freak: Soweit bin ich schon gekommen. Das versteh ich. Wie würde der Code nun mit einer verschachtelten for-Schleife aussehen?

@ Joose: Sorry, aber das mit dem Schreibtischtest versteh ich nun wirklich nicht  Ich hab es gerade versucht und wusste nicht wie ich den richtig durchführen soll


----------



## VfL_Freak (13. Apr 2016)

Moinsen, 


Lestas89 hat gesagt.:


> das mit dem Schreibtischtest versteh ich nun wirklich nicht


Du sollst Dich an Deinen Schreibtisch (alternativ von mir aus auch: Couchtisch ) setzen und wie oben mehrfach beschrieben mit Zettel und Bleistift die Variablenwerte in den einzelnen Schleifendurchläufen notieren, um die Funktionsweise nachzuvollziehen!

In etwa also das, was folgender Code machen würde:

```
for( int i = 3; i < 10; i++ )
{
    System.out.println( "Wert von i:" + i );
}
```

Gruß Klaus


----------



## Lestas89 (13. Apr 2016)

Hallo VfL_Freak,

ich habe das nun gemacht mit den unterschiedlichen Durchläufen für n= 1 und m=2 :

j: 0
i: 0
i: 1
j: 1
j: 2

dann ist die Schleife zu Ende. Ich kann das aber wie oben beschrieben nicht richtig nachvollziehen. Ich wäre dir dankbar, wenn du mir die äquivalente while-Schleife zu verschachtelten for-Schleifen zeigen könntest.


----------



## VfL_Freak (13. Apr 2016)

Moin,


Lestas89 hat gesagt.:


> ich habe das nun gemacht mit den unterschiedlichen Durchläufen für n= 1 und m=2 :


WAS genau hast Du gemacht?? 
Mit welchem Code ?? 

Wir jetzt hier garantiert nicht den fertigen Code reinklatschen, weil Du dann ja null Lerneffekt hättest .....

Gruß Klaus


----------



## Lestas89 (13. Apr 2016)

Den Schreibtischtest, oben hab ich die Variablen angegeben nach den Durchläufen 
Ich bin dir auch dankbar, dass du einen guten Lerneffekt erzielen möchtest bei mir  aber ich komme wirklich nicht mehr weiter.


----------



## VfL_Freak (13. Apr 2016)

Poste den Code, den Du jetzt konkret meinst !!!
Isses denn so schwer ??


----------



## Lestas89 (13. Apr 2016)

Welchen Code meinst du ? Mein Code ist doch falsch. Ich tu mich wirklich schwer, tut mir leid 


```
int j = 0;
        int i = 0;

        while(j <= m) {
           
            while( i <= n) {
           
            ausgabe += " \t " + " ("+i+","+j+") \t";
            i++;
            }
            j++;
           
            }
        JOptionPane.showMessageDialog(null, ausgabe);
```


----------



## Joose (13. Apr 2016)

Beim Schreibtischtest solltest du nicht nur die Variablen i und j beachten, auch die Bedingungen der Schleifen und den String ausgabe.
Dabei wird dir auch auffallen warum die Bedingung der inneren Schleife nicht mehr zutrifft und du nicht mehr Ausgaben bekommst als 2.


----------



## Lestas89 (13. Apr 2016)

Okay Joose, jetzt hab ich das mal genau so gemacht und ich verstehe immer noch nicht wo mein Fehler liegt. So dachte ich, wären die einzelnen Aufrufe:

für n =1 und m = 2

int i = 0;
int j = 0;



while(0 <= 2){
    while( 0 <= 1){

        ausgabe + = (0,0)
       i++
       }
       j++
}

Nächster Durchgang:

while(0 <= 2){
    while( 1 <= 1){

        ausgabe + = (1,0)
       i++
       }
       j++
}

Nun ist die Schleife zu Ende und das versteh ich eben nicht. Da bräuchte ich Hilfe!


----------



## Joose (13. Apr 2016)

Die innere Schleife ist zu Ende das passt ja, die äußere läuft ja nochmal durch/weiter.
Sprich beim nächsten Durchlauf der äußeren Schleife soll die innere Schleife ja auch wieder durchlaufen werden oder?


----------



## Lestas89 (13. Apr 2016)

Richtig Joose, die innere sollte nochmal durchlaufen aber genau das passiert ja nicht. Die nächsten Aufrufe auf meinem Blatt waren:

while(1 <= 2){
while( 0 <= 1){

ausgabe + = (0,1)
i++
}
j++
}

Nächster Durchgang:

while(1 <= 2){
while( 1 <= 1){

ausgabe + = (1,1)
i++
}
j++
}

Aber genau die Durchläufe kommen ja nicht mehr vor. Wieso?


----------



## Joose (13. Apr 2016)

Welchen Grund gibt es das eine Schleife nicht ausgeführt wird? -> Die Bedingung trifft nicht zu!


----------



## Lestas89 (13. Apr 2016)

Aber das versteh ich nicht, dort muss doch drinstehen 

while(1 <= 2)

Wieso trifft die Bedingung denn nicht mehr zu?


----------



## Joose (13. Apr 2016)

Lestas89 hat gesagt.:


> Aber das versteh ich nicht, dort muss doch drinstehen .... while(1 <= 2)



Ja das ist die Bedingung der äußeren Schleifen beim 2.Durchlauf. Natürlich trifft diese Bedingung zu.
Die Schleife wird betreten und die Bedingung der inneren Schleife wird geprüft. Was passiert nun? Wie schaut diese Bedingung aus? Wird die innere Schleife betreten?

Ich verweise nochmal auf den Schreibtischtest von @Meniskusschaden 


Meniskusschaden hat gesagt.:


> ```
> n=1
> m=2
> i=0
> ...


Hier wird dir schön gezeigt welchen Wert i und j haben, sowie die Bedingungen der Schleifen. Zusätzlich noch die Ausgaben und wann i bzw. j erhöht werden.


----------



## Lestas89 (13. Apr 2016)

Ich verstehe das nicht, den Schreibtischtest hab ich ja gemacht und es sollte eigentlich hinhauen. Mir fehlt nur das "Konstrukt" wie die Schleife aussehen soll. Kannst du mir vllt noch mehr auf die Sprünge helfen?


----------



## Joose (13. Apr 2016)

Lestas89 hat gesagt.:


> Ich verstehe das nicht, den Schreibtischtest hab ich ja gemacht und es sollte eigentlich hinhauen.


Dann hast du es nicht richtig gemacht -> dann würde dir auffallen das die Bedingung der inneren Schleife nicht mehr zutrifft nach 2 Ausgaben.

Ich hab die Zeilen nun noch kommentiert, da sie anscheinend nicht verständlich genug sind. Vielleicht fällt dir damit der Fehler auf!

```
....
i=2, j=0   while_i 2<=1?    <--- die Bedingung der inneren Schleife trifft nicht mehr zu, Schleife nicht betreten
i=2, j=0   j++              <--- Zähler j erhöhen
i=2, j=1   while_j 1<=2?    <--- die Bedingung der äußeren Schleife trifft zu, Schleife betreten
i=2, j=1   while_i 2<=1?    <--- die Bedingung der inneren Schleife tritt nicht zu, Schleife nicht betreten
i=2, j=1   j++              <--- Zähler j erhöhen
i=2, j=2   while_j 2<=2?    <--- die Bedingung der äußeren Schleife trifft zu, Schleife betreten
i=2, j=2   while_i 2<=1?    <--- die Bedingung der inneren Schleife tritt nicht zu, Schleife nicht betreten
....
```


----------



## Lestas89 (13. Apr 2016)

Ich danke dir für deine Mühe aber was ich auch tue der Fehler fällt mir einfach nicht auf


----------



## Joose (13. Apr 2016)

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 (13. Apr 2016)

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 (13. Apr 2016)

Lestas89 hat gesagt.:


> 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:

```
...
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 (13. Apr 2016)

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


----------



## Joose (13. Apr 2016)

Lestas89 hat gesagt.:


> 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:


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


----------



## VfL_Freak (13. Apr 2016)

hier mal ein zwei Links aus einer kurzen Google-Suche 
http://www.u-helmich.de/inf/BlueJ/lexikon/S-Z/whileSchleifen.html
http://www.programmierenlernenhq.de...e-do-while-schleife-und-for-schleife-in-java/

Gruß Klaus


----------



## Lestas89 (13. Apr 2016)

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.


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

aber wie würde das aussehen für:



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


----------



## Flown (13. Apr 2016)

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


----------



## InfectedBytes (13. Apr 2016)

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 (13. Apr 2016)

Sorry ich meinte natürlich


```
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?


```
int j = 0;
        int i = 0;

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


----------



## Joose (13. Apr 2016)

Mache es doch so wie InfectedBytes gesagt. Wandle zuerst die inner-Schleife um, und dann erst die äußere.

```
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


----------



## Lestas89 (13. Apr 2016)

Okay. Ich esse jetzt erstmal etwas und poste nachher wieder


----------



## Lestas89 (13. Apr 2016)

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?


```
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?


----------



## InfectedBytes (13. Apr 2016)

die erhöhung ist das letzte was in der schleife gemacht wird. Bei deiner inneren Schleife, erhöhst du allerdings als aller erstes


----------



## Lestas89 (13. Apr 2016)

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


```
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 !


----------



## Xyz1 (13. Apr 2016)

tl;dr

Meiner Meinung nach, muss das genau so aussehen,:

```
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("");
        }
    }
```


```
(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.


----------



## Joose (14. Apr 2016)

@DerWissende wenn du dir den Thread durchgelesen hättest, wüsstest du das die Aufgabe schon gelöst ist


----------

