hallo,
meine Methode delDoppelte sollte in einem beliebigen int Array alle mehrfach vorhandenen zahlen löschen, sodass sie nur mehr 1 mal vorhanden sind. die hilfs arrays verwende ich nur, weil das übergebene array a nicht verändert werden darf...
[Java]/**
* Die Methode löscht aus einem int Array alle Zahlen die mehr als einmal vorkommen,
* bis sie nur noch einmal im Array enthalten sind
* @param a Array in dem gelöscht werden soll
* @return Array, in dem jede Zahl nur noch 1 mal vorkommt
*/
public static int [] delDoppelte (int []a) {
int [] ret = null;
int [] b = null;
b = a.clone();
if (a != null && a.length > 0) {
int [] hilf = new int [a.length];
sortMinArray(b);
int j = 1;
for (int i = 0; i < a.length - 1; i++) {
if (i <= a.length - 2) {
if (b != b[i + 1]) {
hilf [j - 1] = b;
j++;
} else
hilf[j -1] = b[b.length - 1];
}
}
ret = new int [j];
for (int i = 0; i < j; i++)
ret = hilf;
}
return ret;
}[/code]
ich habe hier aber ein problem, denn das ergebnis dieser methode hat (nach meinen bisherigen beobachtungen) 2 verschiedene fälle:
1. es stimmt (und zwar genau dann, wenn die größte zahl im Array mindestens 2 mal vorkommt
2. die letze(und auch größte) zahl im Array ist nicht vorhanden und stattdessen wird eine 0 eingesetzt (dies ist der fall, wenn die größte Zahl im Array nur einmal vorkommt)
ich kann den fehler einfach nicht finden, immer wenn ich denke ich hab ihn gefunden, funktioniert nur noch etwas nicht...
hier ist noch die methode sortMinArray die ich in der methode delDopplete verwende, welchen einen int array der größe nach sortiert, beginnend bei der kleinsten zahl. (diese methode müsste aber stimmen...)
es wäre echt super wenn mir jmd weiterhelfen könnte, denn ich weiß wirklich nicht mehr weiter...
ich hoffe es ist nicht zu viel was ich hier geschrieben habe, aber ich denke diese beschreibung ist nötig..
auf jeden fall falls mir jmd hilft schon mal ein riesengroßes dankeschön im voraus
lg rudlxd
meine Methode delDoppelte sollte in einem beliebigen int Array alle mehrfach vorhandenen zahlen löschen, sodass sie nur mehr 1 mal vorhanden sind. die hilfs arrays verwende ich nur, weil das übergebene array a nicht verändert werden darf...
[Java]/**
* Die Methode löscht aus einem int Array alle Zahlen die mehr als einmal vorkommen,
* bis sie nur noch einmal im Array enthalten sind
* @param a Array in dem gelöscht werden soll
* @return Array, in dem jede Zahl nur noch 1 mal vorkommt
*/
public static int [] delDoppelte (int []a) {
int [] ret = null;
int [] b = null;
b = a.clone();
if (a != null && a.length > 0) {
int [] hilf = new int [a.length];
sortMinArray(b);
int j = 1;
for (int i = 0; i < a.length - 1; i++) {
if (i <= a.length - 2) {
if (b != b[i + 1]) {
hilf [j - 1] = b;
j++;
} else
hilf[j -1] = b[b.length - 1];
}
}
ret = new int [j];
for (int i = 0; i < j; i++)
ret = hilf;
}
return ret;
}[/code]
ich habe hier aber ein problem, denn das ergebnis dieser methode hat (nach meinen bisherigen beobachtungen) 2 verschiedene fälle:
1. es stimmt (und zwar genau dann, wenn die größte zahl im Array mindestens 2 mal vorkommt
2. die letze(und auch größte) zahl im Array ist nicht vorhanden und stattdessen wird eine 0 eingesetzt (dies ist der fall, wenn die größte Zahl im Array nur einmal vorkommt)
ich kann den fehler einfach nicht finden, immer wenn ich denke ich hab ihn gefunden, funktioniert nur noch etwas nicht...
hier ist noch die methode sortMinArray die ich in der methode delDopplete verwende, welchen einen int array der größe nach sortiert, beginnend bei der kleinsten zahl. (diese methode müsste aber stimmen...)
Java:
public static void sortMinArray (int []a) {
int pos = 0;
if (a != null && a.length > 0) {
for (int i = 0; i < a.length - 1; i++) {
pos = getMinPos(a, i);
swap(a, i, pos);
}
}
}
ich hoffe es ist nicht zu viel was ich hier geschrieben habe, aber ich denke diese beschreibung ist nötig..
auf jeden fall falls mir jmd hilft schon mal ein riesengroßes dankeschön im voraus
lg rudlxd
Zuletzt bearbeitet von einem Moderator: