# Mehrdimensionale Arrays mit geschachtelter for-Schleife initialisieren



## TaktSu (31. Jan 2017)

Hi Leute,
ich stehe einfach völlig auf dem Schlauch... oder so...

Hier ist mein Quelltext:

```
public class Übung1 {

    public static void main (String[] args){
      
        for (int i=0; i<= 13; i++){
            System.out.println("durchlauf i" +i);
          
            for (int j=0; j<= 15; j++){
              
                int [][] array = new int [j][i];
              
              
                System.out.println("durchlauf j" +j);
               break;
            }    
        }
```

Pseudocode:
 Befülle bei jedem Durchlauf Array _ mit dem inkrement und befülle Array [j] bei jedem Durchlauf mit dem Inkrement.

D.h. die ersten Zeilen bis zur Zahl 13 sollten sich abwechselnd befüllen können.
Also: durchlauf i 1
durchlauf i 1
durchlauf j 2
durchlauf i 2
durchlauf j n... usw

Ab Durchlauf 13 sollte dann nur noch das Array [j] befüllt werden, da die Bedingung der ersten for-Schleife schon erfüllt ist und i den Wert 13 erreicht hat.
Leider klappt das ganz und gar nicht wie ich mir das Vorstelle.
Die "break-Anweisung" ist dafür da, damit die 2. for-Schleife nach dem Druchlauf in die 1. zuirückkehrt.... 
Problem: Array j wird dann nur mit dem Wert 0 initialisiert...
Egal wie ich es drehe und biege, es will nicht funktionieren!
Was mache ich falsch?
Kann mir jemand Tipps geben?

Vielen Dank im Voraus und gute Nacht.

Ich gehe jetzt schlafen_


----------



## TaktSu (31. Jan 2017)

sorry für doppelpost.
Edit: Im Grunde geht es mir ja nicht um die Arrays in erster Linie... sondern um die for-Schleifen an sich.
Die Arrays werden ja über meine Sysout-Anweisung nicht angezeigt^^


----------



## InfectedBytes (31. Jan 2017)

du musst das Array vor der Schleife deklarieren:

```
int[][] array = new int[breite][hoehe]
```
und dann in der Schleife die Werte zuweisen mit

```
array[i][j] = irgendeinWert;
```


----------



## TaktSu (31. Jan 2017)

Hi und vielen Dank für die Hilfe.
Ich habe mich gestern ein wenig vertan. Es geht mir in erster Linie weniger um Arrays, sondern vielmehr darum, dass die Schleife richtig durchläuft.
Also abwechselnd zwischen Schleife "i" und Schleife "j" eine Ausgabe erfolgt.

Sorry. war gestern schon was spät


----------



## JStein52 (31. Jan 2017)

Ich glaube es weiss keiner so recht was du genau möchtest. Aber es ist ja klar dass die innere Schleife immer wieder bei j=0 beginnt wenn du sie sofort wieder mit break verlässt. Villeicht kannst du noch mal beschreiben was du willst.


----------



## TaktSu (31. Jan 2017)

Hi,
die Äußere Schleife soll bloß 13 mal durchlaufen und die innere Schleife soll 15 mal durchlaufen.
Aber alles nacheinander.
Also: i1
j1
i2
j2
Nach 13 Durchläufen der beiden Schleifen soll nur noch die innere Schleife (j) durchlaufen bis j den Wert 15 erreicht hat.

Vielen Dank für die Hilfe


----------



## JStein52 (31. Jan 2017)

so was:


```
for (int i=0; i<= 13; i++){
            System.out.println("durchlauf i" +i);
          
            for (int j=i; j<= 15; j++){
             
                int [][] array = new int [j][i];
                System.out.println("durchlauf j" +j);
                if (j<13) {
                    break;
                }
            }
        }
```


----------



## TaktSu (31. Jan 2017)

Ohh vielen vielen Dank. Ich habs gerschnallt!!!


----------



## DefconDev (31. Jan 2017)

Müsste es nicht if(i<13) heißen?

Und welche Sinn macht es in jedem schleifendurchlauf ein neues Array zu erstellen ohne es zu nutzen?


Und der te wollte doch abwechselnde Ausgabe
i1 j1 i2 j2 i3 j3... i13 j13 j14 j15


----------



## JStein52 (1. Feb 2017)

Hades85 hat gesagt.:


> Müsste es nicht if(i<13) heißen?


nein


Hades85 hat gesagt.:


> Und der te wollte doch abwechselnde Ausgabe


kriegt er ja


Hades85 hat gesagt.:


> Und welche Sinn macht es in jedem schleifendurchlauf ein neues Array zu erstellen ohne es zu nutzen?


Über Sinn oder Unsinn des Arrays hat sich der TE ja oben geäussert.


----------



## TaktSu (1. Feb 2017)

Hi und vielen Dank für dein Interesse @ Hades85.
JStein's Code ist schon richtig.
Die break-Anweisung in eine If-Anweisung zu setzen, dessen Bedingung die Variable "j" auf die Grenze der Äußeren Schleife setzt, damit die innere Schleife nach dem 12. Durchlauf der äußeren Schleife weiterhin ausgeführt wird, ergibt schon Sinn.

Zu deiner Bemerkung zur Variable: Es ist wurscht ob du da "j" oder "i" einsetzt. Was zählt ist die Bedingung "x < 13 ". Und da die lokale Variable sowieso auf den Wert von "i" gestzt wird, issses wurscht wierum man es macht.

Zu den Arrays: Das ist Teil meines Projekts für einen simplen Scanner.
Wenn du also auch einmal in dieser Form weitere Arrays initialisieren musst, dann kannst du dir gerne - dank JSteins Hilfe - diesen Thread zu Rate ziehen.

Viele Grüße


----------



## DefconDev (1. Feb 2017)

die break anweisung habe ich komplett übersehen.

Warum soll ich JSteins hilfe zu raten ziehen wenn ich wissen will wie man ein Int Array in eine Schleife erzeugt die nach dem jeweiligen Schleifen Durchgang überhaupt nicht mehr existiert!?????

Also entweder ist mein gripaler Infekt schlimmer als ich dachte, oder dein array macht überhaupt gar keinen Sinn.



> Befülle bei jedem Durchlauf Array _ mit dem inkrement und befülle Array [j] bei jedem Durchlauf mit dem Inkrement._



Und wo geschieht das? Lieber TE?


----------



## TaktSu (1. Feb 2017)

Hallo Hade85,
bezüglich Arrays würde ich dir gerne die Bücher "Einführung in Java 8 ideal für den Studieneinstieg", "Grundkurs programmieren in Java" und "Java von Kopf bis Fuß" nahelegen.
Bitte habe Verständnis dafür, dass man diesen Thema nicht in einem Forum in Form von paar Zeilen Text klären kann.

Viele Grüße


----------



## DefconDev (1. Feb 2017)

TaktSu hat gesagt.:


> Hallo Hade85,
> bezüglich Arrays würde ich dir gerne die Bücher "Einführung in Java 8 ideal für den Studieneinstieg", "Grundkurs programmieren in Java" und "Java von Kopf bis Fuß" nahelegen.
> Bitte habe Verständnis dafür, dass man diesen Thema nicht in einem Forum in Form von paar Zeilen Text klären kann.
> 
> Viele Grüße



Möchtest du mich gerade trollen? Ich glaube ich verstehe schon ein wenig von Arrays, dein Code mein lieber ist absoluter unsinn.

Dann erklär mir mal was nach der deklarierung und initialisierung deines int arrays nach dem jeweiligen Schleifen durchlauf passiert?

Bzw. schon mal probiert das array außerhalb der Schleife anzusteuern?

Und zu meinem EDIT, ein Post davor, könntest du vielleicht auch mal drüber schauen.


----------



## JStein52 (1. Feb 2017)

Hades85 hat gesagt.:


> Und zu meinem EDIT, ein Post davor, könntest du vielleicht auch mal drüber schauen.


Du könntest auch mal in den posts des TE weiter oben schauen. Da steht nämlich dass die Geschichte mit dem array hier nicht relevant ist und es ihm nur darum ging wie er seine Schleifen formuliert. Und der TE war ja zufrieden mit dem Ergebnis, Also wird er schon wissen was er mit seinen Arrays tut. Deshalb hättest du das Thema auch gar nicht mehr hochkochen müssen.


----------

