# 1d Array in Blöcke aufteilen und diese in ein 2d Array übergeben.



## towelie8 (17. Dez 2020)

Guten Abend, 

Ich bräuchte dringend Hilfe.
Und zwar will ich das gegebene Array in "size" große Blöcke aufteilen. Diese Blöcke dann in einem 2D Array speichern.
Die erwartete Ausgabe ist {110} {110} {010}, doch bei mir ist es {110} {110} {110}. Kann mir jemand sagen was ich falsch mache?

Grüße



```
public static void main (String[] args){
    
    char[]test= { '1', '1', '0', '1', '1', '0', '0', '1', '0' };
    
    test123(test, 3);
    
}



public static char[][] test123(char[] bits, int size) {
        char[][] bitBlocks = new char[size][size];
        
        for (int row = 0; row < size; row++) {
            
            for (int col = 0,i = 0; col < bitBlocks[row].length; col++,i++) {
                
                bitBlocks[row][col] = bits[i];
            }
        }
        
        
        return bitBlocks;
    }
```


```

```


----------



## LimDul (17. Dez 2020)

Du darfst i nicht bei jedem innern Schleifendurchlauf nicht neu von 0 beginnen lassen.


----------



## towelie8 (17. Dez 2020)

Den ersten Test hat es bestanden. Danke für deine Hilfe .

Wenn ich die Methode auf diesem Array anwende:

```
char[] test = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H' };

test123(test, 2);
```

Dann sollte ich {AB}{CD}{EF}{GH} rausbekommen, jedoch bekomme ich nur {AB}{CD}{


```
char[][] bitBlocks = new char[bits.length/size][size];
```

Hier teile ich die Array-Länge durch die "size", dass wäre ja 8/2 also 4 (X) Blöcke a 2 (Y) Werte?
Wo ist hier mein Denkfehler... :/.

```
public static char[][] test123(char[] bits, int size) {
        char[][] bitBlocks = new char[bits.length/size][size];
        int i = 0;
        
        for (int row = 0; row < size; row++) {
            
            for (int col = 0; col < bitBlocks[row].length; col++,i++) {
                
                bitBlocks[row][col] = bits[i];
            }
        }
        
        
        return bitBlocks;
```


----------



## LimDul (17. Dez 2020)

Dann solltest du deine Schleife "rows" auch bis bits.length/size laufen lassen und nicht nur bis size 

PS: Wenn dein Eingabearray nicht exakt von der Länge aufteilbar ist, fliegt am eine ArrayOutOfBoundsException, wenn i zu groß wird,


----------



## towelie8 (17. Dez 2020)

Ups, vielen Dank, jetzt läuft es.
Wünsche dir noch einen schönen Abend .


----------

