java: Wie teilt man ein 2d-array in zwei 2d-arrays
Ich Schreibe ein Programm multiplizieren von Matrizen (2d-arrays) so effizient wie möglich, und dafür muss ich spaltete meine zwei arrays, die in jeweils zwei und senden Sie aus, um ein zweites Programm multipliziert werden. Das Problem, das ich habe, ist, wie teilt man ein 2d-array in zwei 2d-arrays, die an bestimmten Punkten (auf halbem Weg). Hat jemand irgendwelche Ideen?
- was haben Sie bisher getan, mr magic?
- Was bedeutet split eine zwei-dimensionale array "auf halbem Weg"?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können sagen, Sie haben ein 2d-array von strings, wie so
Nun müssen Sie einen Weg, um diese split-arrays auf dem halben Weg Punkt. Lässt sich der Punkt auf halbem Weg. Herauszufinden, wie groß das array ist und dann schneiden Sie es in der Hälfte. Beachten Sie, dass Sie auch behandeln müssen, wenn das array nicht eine gerade Länge. B. Länge der 3. Wenn dies der Fall ist, verwenden wir die
Math.floor()
Funktion.Nun haben wir alle Infos, die wir brauchen, um zwei 2d-arrays von einem. Jetzt müssen wir explizit Kopie erstellen und kopieren Sie die Daten über.
Und fertig!
Nun, wenn Sie wollen, es zu tun, ein wenig netter könnte man es machen, wie dieser
Und schließlich, wenn Sie nicht wollen, dass es explizit tun, können Sie mithilfe der eingebauten Funktionen.
System.arraycopy()
ist ein Beispiel. Hier ist ein link zu der api System.arraycopy()code int[][] newArrayC = new int[length-half][ROW]; for(int i = halfwayPoint; i < length; i++) { for(int j = 0; j < length; j++) { newArrayC[i][j] = array[i][j]; } }
Dies funktioniert, wenn die array-Größe ist [ZEILE][ZEILE] aber offensichtlich die erste Hälfte ist alle 0s, aber ich bekomme die index out of bound exception, wenn ich etwas anderes versuchen. Ärgerlich ist. Vielen Dank für Ihre Hilfe so weit obwohl.new int[length-half][ROW]
, aber in deiner for-Schleife, Sie habeni
gehen von0...length
. Soi
wird größer sein als das array der erste index ermöglichen. Es sollte so etwas wie diesesfor(int i = 0; i < length - half; i++)