//package blatt05; public class Arrays extends MiniJava { public static void main(String[] args) { // Tests: print(new int[] {1, -5, 3, 7, 0 , 2}); print(invert(new int[] {0, 1, -2, -3})); print(invert(new int[] {17})); print(cut(new int[] {-5, 3, 7}, 2)); print(cut(new int[] {17}, 3)); print(cut(new int[] {17}, 0)); //print(cut(new int[] {17}, -1)); print(linearize(new int[][] {{1, 6}, {0}, {-6, 5, 3}})); } public static void print(int[] array) { String out = "{"; // Ausgabestring (für einzelnes write) // Erstes Element separat wegen Kommas: if (array.length > 0) out += array[0]; // Alle weiteren mit Komma hinten anfügen: for (int i = 1; i < array.length; i++) out += ", " + array[i]; // Ausgabe: writeLineConsole(out + "}"); } public static int[] invert(int[] array) { int len = array.length; // Länge zwischenspeichern int[] inverted = new int[len]; // Rückgabearray // Elemente kopieren (vorwärts: i, rückwärts: len-i-1): for (int i = 0; i < len; i++) inverted[len-1-i] = array[i]; return inverted; } public static int[] cut(int[] array, int length) { // Nicht gefordert: Ungültige Parameter behandeln: if (length < 0) throw new IllegalArgumentException(); // Rückgabearray anlegen (automatisch initialisiert mit 0ern): int[] ret = new int[length]; // Anzahl Elemente ermitteln: int len = length; if (array.length < len) len = array.length; // Elemente kopieren: for (int i = 0; i < len; i++) ret[i] = array[i]; return ret; } public static int[] linearize(int[][] array) { // Anzahl Elemente ermitteln: int len = 0; for (int i = 0; i < array.length; i++) len += array[i].length; // Rückgabearray (1D) erzeugen: int[] ret = new int[len]; // Elemente kopieren int z = 0; // separater Zähler für 1D-Array for (int i = 0; i < array.length; i++) for (int j = 0; j < array[i].length; j++) ret[z++] = array[i][j]; // erhöht z als Seiteneffekt return ret; } }