Created
December 5, 2016 20:25
-
-
Save arselzer/f8a8e93e3dcc2bd90bc04db349b77bb4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class MultiArray { | |
/* | |
Aufgabe: | |
Methoden zur Manipulation eines zwei-dimensionalen Arrays, interpretiert | |
als Matrix (mit Zeilen und Spalten). | |
Ergänzen Sie fehlende Teile der Klasse entsprechend den Kommentaren | |
an den mit TODO gekennzeichneten Stellen. | |
Sonstige Anforderungen: Die Verwendung der Klasse 'String' oder 'StringBuffer' | |
ist nicht erlaubt. | |
Punkte (maximal 18): | |
9 Punkte für extend, | |
9 Punkte für setColumn. | |
Bewertung: für jede Methode jeweils ALLES ODER NICHTS! | |
nur vollständig korrekt implementierte Methoden erhalten Punkte. | |
*/ | |
// Gibt das angegebene Array zeilenweise aus. | |
// Der Zeilenindex erhöht sich von oben nach unten. | |
// Der Spaltenindex erhöht sich von links nach rechts. | |
// Vorbedingung: array != null und alle array[i] != null (0 <= i <= array.length) | |
// DIESE METHODE SOLL NICHT VERÄNDERT WERDEN. | |
public static void printArray(int[][] array) { | |
for (int i = 0; i < array.length; i++) { | |
for (int j = 0; j < array[i].length; j++) { | |
System.out.print(array[i][j] + "\t"); | |
} | |
System.out.println(); | |
} | |
} | |
// alle Zeilen, die mehr als n Elemente haben werden | |
// auf die Länge n gekürzt. Die Werte an den Positionen | |
// 0 bis n-1 der Zeile bleiben unverändert. | |
// Beispiel: ein Aufruf mit | |
// array: {{1,2}, | |
// {3,4,5}, | |
// {6,7,8,9}, | |
// {10,11,12,13,14}} | |
// n: 3 | |
// veändert das angegebene Array wie folgt: | |
// array: {{1,2}, | |
// {3,4,5}, | |
// {6,7,8}, | |
// {10,11,12}} | |
// Vorbedingung: array != null und alle array[i] != null (0 <= i < array.length), | |
// n >= 0 | |
public static void trim(int[][] array, int n) { | |
if (array != null && n >= 0) { | |
for (int i = 0; i < array.length; i++) { | |
if (array[i] == null) break; | |
if (array[i].length > n) { | |
int[] newArray = Arrays.copyOf(array[i], n); | |
array[i] = newArray; | |
} | |
} | |
} | |
} | |
// ersetzt in 'array' die Elemente der Spalte 'columnIndex' | |
// durch Elemente in 'column'. | |
// In der ersten Zeile wird das erste Element aus 'column' benutzt, | |
// in der zweiten Zeile das zweite etc.. Falls eine Zeile kürzer als | |
// 'columnIndex' ist, wird diese Zeile und das entsprechende Element | |
// in 'column' ignoriert (siehe Beispiel). | |
// Gibt es mehr Zeilen als Elemente in 'column' bleiben weitere Zeilen | |
// unverändert. | |
// Beispiel: ein Aufruf mit | |
// array: {{1,2,3,4}, | |
// {5}, | |
// {6,7,8,9}, | |
// {10,11,12,13,14}, | |
// {15,16,17,18}} | |
// columnIndex: 2 | |
// column: {100,200,300,400} | |
// veändert das angegebene Array wie folgt: | |
// array: {{1,2,100,4}, | |
// {5}, | |
// {6,7,300,9}, | |
// {10,11,400,13,14}, | |
// {15,16,17,18}} | |
// Vorbedingung: array != null und alle array[i] != null (0 <= i < array.length), | |
// columnIndex >= 0, column != null | |
public static void setColumn(int[][] array, int columnIndex, int[] column) { | |
if (array != null && columnIndex >= 0 && column != null) { | |
for (int i = 0; i < array.length; i++) { | |
if (array[i] == null) break; | |
if (i < column.length && columnIndex < array[i].length) { | |
array[i][columnIndex] = column[i]; | |
} | |
} | |
} | |
} | |
// Diese Methode können Sie zum Testen nutzen. Geht nicht in die Beurteilung ein. | |
public static void main(String[] args) { | |
//ein Array zum Testen | |
int[][] array = new int[][] {{1,2,3,4}, | |
{5}, | |
{6,7,8,9}, | |
{10,11,12,13,14}, | |
{15,16,17,18}}; | |
int[] column = new int[]{100,200,300,400}; | |
printArray(array); | |
trim(array, 3); | |
System.out.println(); | |
printArray(array); | |
System.out.println(); | |
setColumn(array, 1, column); | |
printArray(array); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment