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

towelie8

Mitglied
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


Java:
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;
    }
Java:
 

towelie8

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

Wenn ich die Methode auf diesem Array anwende:
Java:
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}{

Java:
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... :/.
Java:
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

Top Contributor
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,
 

Neue Themen


Oben