1D Array in 2D Array übertragen

Orkanson

Mitglied
Hi Community,

nächstes Thema was mich rätseln lässt. Vielleicht habt ihr ja einen Gedankenanstoss für mich.
Ich habe ein Array {'H','a','l','l','o'} und möchte das in ein neues Array mit zwei Dimensionen übertragen {{'H','a'},{'l','l'},{'o'}}, leider ist mein Gedankengang noch nicht vollständig/richtig.

Ihr könnt da sicher weiterhelfen und mir eine Gedankenstütze geben.


Java:
    public static char[][] convert(char[] input, int n) {
        int counter = n;
        int zweiCharCounter = 0;
        char[][] zweiChar = new char[n][];

        for (int i = 0; i < input.length - 1; i++) {
            input[i] = zweiChar[zweiCharCounter][i];
            zweiCharCounter++;
        }
        System.out.println(zweiChar);
        return zweiChar;
    }
 
Dein zweiChar-Array hat noch keine Höhe. Teile doch die length von input druch n.
Beispiel:
{'H','a','l','l','o'}
-> length ist 5.
5 geteilt durch n (in dem Fall 2) ergibt 2,5. Du musst es so machen, dass immer aufgerundet wird!
-> 3

Für's erste würde ich aber ein einfacheres Beispiel nehmen, z.B. {{'H','a'},{'l','l'},{'o','!'}}
 
Also ich hab das Problem jetzt gelöst, wenn ich das Array genau teilen kann.
Jetzt habe ich aber immer noch das Problem bei ungeraden Arrays wie bei {'H','a','l','l','o'}.
Möchte ich das zum Beispiel bei jedem 2 cutten klappt es nicht.

Irgendwie gerade zum verzweifeln für mich.

Java:
    public static char[][] convert(char[] input, int n) {
        int einCharCounter = 0;
               
        char[][] zweiChar = new char[input.length/n][n];
   
        for (int i = 0; i < zweiChar.length; i++) {
            for (int j = 0; j < zweiChar[i].length; j++) {
                zweiChar[i][j] = input[einCharCounter];
                einCharCounter++;
            }
        }
   
        return zweiChar;
    }
 
Ich sehe nicht, dass du aufrundest.

Wie dem auch sei. So etwas kann nicht gemacht werden:
{{'H','a'},{'l','l'},{'o'}}
Es kann nur so etwas gemacht werden:
{{'H','a'},{'l','l'},{'o',''}}
 
Also hab mein Problem nun gelöst es wird gemacht was ich möchte!
Danke für die Hilfe.
Java:
public static char[][] convert(char[] input, int n) {
        int einCharCounter = 0;
        char[][] zweiChar = null;
      
        //Wenn Array genau aufgeht
        if (input.length % n == 0) {
            zweiChar = new char[input.length / n][n];
        }
        //Wenn Array nicht genau aufgeht
        if (input.length % n >= 1) {
            zweiChar = new char[input.length / n + 1][n];
        //Letzte Zeile der verbleibenden Buchstaben anpassen
            for(int i = 0;i < zweiChar.length; i++) {
                if(i == zweiChar.length-1) {
                    zweiChar[i]=new char [input.length%n];
                }
            }
            for (int i = 0; i < zweiChar.length; i++) {
                for (int j = 0; j < zweiChar[i].length; j++) {
                    zweiChar[i][j] = input[einCharCounter];
                    einCharCounter++;
                  
                }
            }
        }
        einCharCounter = 0;
        for (int i = 0; i < zweiChar.length; i++) {
            for (int j = 0; j < zweiChar[i].length; j++) {
                zweiChar[i][j] = input[einCharCounter];
                einCharCounter++;
            }
        }

        return zweiChar;
    }
 

Zurück
Oben