Hallo zusammen,
die Aufgabe lautet:
Dazu habe ich folgenden Quellcode:
Mein Problem ist:
Bei den beiden for-Schleifen wird zwar irgendwo das tauschen erfüllt, aber ich durchdringe einfach nicht, wie
ich jetzt das from-to Problem lösen kann.
die Aufgabe lautet:
Java:
Gegeben ist die Signatur der Methode swapArray in Functionality.java.
Implementieren Sie eine REKURSIVE Methode, die zwei Index-Werte und zwei Integer-Arrays erhält.
Die Methode soll von dem Index "from" (inklusive) bis zum Index "to" (inklusive) die Werte an den gleichen Indexstellen aus den beiden Arrays tauschen. Der Rückgabewert ist die tatsächliche Anzahl der Vertauschungen.
Bsp.:
Mit den Arrays
a = new int[]{5, 1, 2, 8, 6, 9}
b = new int[]{42, 34, 68, 21, 12, 47, 82}
liefert der Aufruf swapArray(1, 4, a, b); den Wert 4, da es vier Vertauschungen gibt.
Nach dem Aufruf sehen die Arrays wie folgt aus:
a = [5, 34, 68, 21, 12, 9]
b = [42, 1, 2, 8, 6, 47, 82]
Folgende Spezialfälle sind zu beachten:
- Wenn einer der Arrays null ist, so wird 0 zurückgegeben
- Wenn "from" negativ, größer als "to" oder größer als die Länge eines Arrays ist, so wird 0 zurückgegeben.
- Wenn "to" größer als die Länge-1 des kleinsten Arrays ist, so wird die Länge-1 des kleinsten Arrays für "to" verwendet.
- "from" und "to" sind inklusive, d.h. die Werte an den Indexstellen "from" und "to" müssen ebenfalls getauscht werden.
Java:
public class Functionality {
public static int swapArray(int i, int j, int[] a, int[] b) {
if (a == null || b == null) {
return 0;
}
if (i < 0 && i > j || i > a.length || i > b.length) {
return 0;
}
if (a.length < b.length) {
if (i > a[1]) {
i = a[1];
}
if (b.length < a.length) {
if (i > b[1]) {
i = b[1];
}
}
for (j = 0; j < b.length; j++) {
for (i = 0; i < a.length; i++) {
a[i] = b[j];
b[j] = a[i];
i = j;
j = i;
}
}
}
swapArray();
return
}
}
Bei den beiden for-Schleifen wird zwar irgendwo das tauschen erfüllt, aber ich durchdringe einfach nicht, wie
ich jetzt das from-to Problem lösen kann.