Doppelte löschen

rudlxd

Mitglied
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...)

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);
			}
		}
	}
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
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
auf merkwürdige Color-Tags kommst du, aber nicht den dicken rot hingewiesenen JAVA-Tag?
'finde Fehler nicht' als Titel hat auch Aussagekraft 0, bitte eher fachlichen Inhalt etwas darstellen
 

Landei

Top Contributor
Keine Ahnung, wo der Fehler ist, aber der Code ist viel zu kompliziert.

Java:
public static int [] removeDuplicates (int ... as) {
   boolean[] isDuplicate = new boolean[as.length];
   int numDeleted = 0;
   for(int i = 0; i < as.length -1; i++) {
       for(int j = i+1; j < as.length; j++) {
           if (as[i] == as[j] && ! isDuplicate[j]) {
               numDeleted++;
               isDuplicate[j] = true;
           } 
       } 
   }
   int[] result = new int[as.length - numDeleted];
   for(int i = 0, j=0; i < as.length; i++) {
       if (! isDuplicate[i]) {
          result[j++] = as[i];
       }  
   }
   return result;
}

Noch einfacher würde es bei Verwendung von [c]Arrays.sort[/c] (falls einen die Reihenfolge nicht interessiert), oder wenn man ein [c]Set[/c] verwendet.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
Java:
            for (int i = 0; i < a.length - 1; i++) {
                if (i <= a.length - 2) {
                    if (b[i] != b[i + 1]) {
                        hilf [j - 1] = b[i];
                        j++;
                    } else
                        hilf[j -1] = b[b.length - 1];
                }
            }
mit dem if hier in der zweiten Zeile prüfst du ob du nahe am Ende bist, aber was passiert wenn das der Fall eintritt, also das if nicht erfüllt ist, das letzte i erreicht ist?
dann musst du doch auch ein Element übernehmen, jedenfalls evtl., nicht wenn doppelt

das kann man mit noch weiteren manchem if, Vergleich mit vorherigen Element usw. erreichen

einfacher womöglich: das Array b länger machen, das letzte Element immer nochmal anhängen,
etwas unschöner Trick, aber damit kommt es immer zum Fall 'wenn die größte zahl im Array mindestens 2 mal vorkommt'
und dein Programm funktioniert,
mit Sortierung usw. greifst du ja auch schon massiv ein, da darf dann ruhig ein Element dazukommen
 

Landei

Top Contributor
Mit einem Set:

Java:
    public static int [] removeDuplicates (int ... as) {
        Set<Integer> set = new HashSet<Integer>();
        for(int a : as) {
            set.add(a);
        }
        int[] result = new int[set.size()];
        int i = 0;
        for(Integer a : set) {
           result[i++] = a;
        }
        return result;
    }
 

rudlxd

Mitglied
danke für die tipps, habs aber nicht ganz geschafft.. trotzdem vielen dank

habs jetzt so gelöst wie landei das vorgeschlagen hat

trotzdem nochmal danke :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Map doppelte Values löschen Java Basics - Anfänger-Themen 3
P Doppelte Datensätze aus CSV-Datei löschen Java Basics - Anfänger-Themen 17
R Schleife Doppelte Daten löschen Java Basics - Anfänger-Themen 3
T Array: Doppelte Charakteren löschen - Ein Lösungsversuch Java Basics - Anfänger-Themen 37
G doppelte Einträge im String Array löschen Java Basics - Anfänger-Themen 21
M Doppelte Einträge in einer datei löschen(nach timestamp)! Java Basics - Anfänger-Themen 4
D Doppelte Einträge einer Liste löschen Java Basics - Anfänger-Themen 6
B 2 ELists vergleichen und doppelte Einträge löschen Java Basics - Anfänger-Themen 11
K Warum werden immer noch doppelte Zahlen ausgegeben ? Java Basics - Anfänger-Themen 13
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11
D Doppelte For Schleife / Array Java Basics - Anfänger-Themen 3
C das Doppelte des Wertes in der Console ausgeben Java Basics - Anfänger-Themen 10
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
H Größte Duplikat (Größte Doppelte Wert) eines Arrays ausgeben Java Basics - Anfänger-Themen 9
X Threads Zwei Threads, aber doppelte Ausgabe verhindern (synchronized) Java Basics - Anfänger-Themen 54
H Frage zur ermittlung eines doppelte Paars aus Sotieralgorithmus Java Basics - Anfänger-Themen 4
N Best Practice Doppelte und einfach Anführungsstriche in Runtime.getruntime().exec() Java Basics - Anfänger-Themen 6
J Doppelte Ausgabe erzeugen Iterator Java Basics - Anfänger-Themen 6
L Doppelte Schleife Anpassen Java Basics - Anfänger-Themen 5
S CSV auf doppelte Einträge überprüfen Java Basics - Anfänger-Themen 8
S Doppelte Liste Einfügen Java Basics - Anfänger-Themen 1
M Argument in Integer verwandeln und das Doppelte davon printen Java Basics - Anfänger-Themen 9
T Klassen Doppelte Elemente aus Container entfernen Java Basics - Anfänger-Themen 6
M Erste Schritte Doppelte Ausgabe? (JList) Java Basics - Anfänger-Themen 1
kilopack15 Array auf doppelte Elemente überprüfen Java Basics - Anfänger-Themen 16
S Input/Output Doppelte Input-Abfrage Java Basics - Anfänger-Themen 3
K Input/Output Doppelte Ausgabe Java Basics - Anfänger-Themen 5
S Erste Schritte Doppelte Ausführung? Java Basics - Anfänger-Themen 4
E Threads Doppelte Threads beenden Java Basics - Anfänger-Themen 4
J Variablen Doppelte Werte in Int Array Java Basics - Anfänger-Themen 10
D Java doppelte Zahlen auch über 10 in einem String entfernen Java Basics - Anfänger-Themen 2
D Java doppelte Zahl/Zeichen in einem String entfernen Java Basics - Anfänger-Themen 6
S ArrayList Gruppieren, "Doppelte Werte" Addieren Java Basics - Anfänger-Themen 5
O Doppelte For-Scheife Java Basics - Anfänger-Themen 6
E Array doppelte Einträge Java Basics - Anfänger-Themen 2
S Variablen Array in ArrayList auf doppelte Einträge überprüfen Java Basics - Anfänger-Themen 4
M Einfache und Doppelte Operatoren Java Basics - Anfänger-Themen 3
B Doppelte Werte aus Array entfernen ohne Import - Algorithmus Java Basics - Anfänger-Themen 5
P Doppelte Einträge in eine List Java Basics - Anfänger-Themen 5
S Array befüllen & auf doppelte werte prüfen Java Basics - Anfänger-Themen 6
B Klassen Doppelte werte Filtern XML, Datenbank und DOM Java Basics - Anfänger-Themen 3
C Doppelte Einträge aus String [] Array entfernen. Java Basics - Anfänger-Themen 5
K Doppelte namen bei random Java Basics - Anfänger-Themen 3
U Doppelte Interfcae Implementierung Java Basics - Anfänger-Themen 10
M doppelte Einträge Emailempfänger... Java Basics - Anfänger-Themen 35
G txt-File als DB>doppelte Einträge verhindern/Suche/... Java Basics - Anfänger-Themen 10
DerGroßeNargus Doppelte Liste initialisieren Java Basics - Anfänger-Themen 2
H Datentypen Doppelte Verkette Liste - Verständnissproblem Java Basics - Anfänger-Themen 5
T Doppelte Liste Java Basics - Anfänger-Themen 8
V Doppelte Zahl suchen Java Basics - Anfänger-Themen 14
L Hilfe, doppelte Zufallszahlen Java Basics - Anfänger-Themen 13
G List suchen und doppelte rausfiltern Java Basics - Anfänger-Themen 3
T Doppelte Anführungszeichen ersetzen?? Java Basics - Anfänger-Themen 4
Luk10 Doppelte for-schleife Java Basics - Anfänger-Themen 7
P Doppelte Einträge in mehreren Textfiles finden und ausgeben Java Basics - Anfänger-Themen 8
P doppelte Werte im Array ausgeben. Java Basics - Anfänger-Themen 4
J doppelte Einträge in einem Array Java Basics - Anfänger-Themen 7
M Aufgabe: Array auf doppelte Zahl prüfen Java Basics - Anfänger-Themen 8
-horn- Doppelte Einträge entfernen, aus Array, List oder sonstwas Java Basics - Anfänger-Themen 9
G _NUR_ doppelte Einträge in einem Array behalten Java Basics - Anfänger-Themen 3
J Doppelte Integer aus einem Array entfernen - seltsames Prob. Java Basics - Anfänger-Themen 5
C Doppelte Punktnotation Java Basics - Anfänger-Themen 2
0 ArrayList - doppelte Einträge entfernen? Java Basics - Anfänger-Themen 9
S Methode, um doppelte Einträge in Array zu finden Java Basics - Anfänger-Themen 5
F doppelte Elemente in HashSet Java Basics - Anfänger-Themen 5
G java.util.LinkedList: Doppelte Elemente vermeiden Java Basics - Anfänger-Themen 5
G Wie doppelte Einträge in ComboBox vermeiden ? Java Basics - Anfänger-Themen 9
S "doppelte" if-Anweisung Java Basics - Anfänger-Themen 10
G Doppelte (Paar) Werte in einem Vektor finden Java Basics - Anfänger-Themen 6
F Doppelte Datensätze zusammenziehen Java Basics - Anfänger-Themen 2
V Doppelte Zahlen bei Lotto verhindern Java Basics - Anfänger-Themen 11
H Leere Zeilen in Textdatei löschen lassen Java Basics - Anfänger-Themen 5
V JSON-Objs aus JSON-Obj filtern und löschen (Manipulation ohne Kenntnis der vollst. Struktur) Java Basics - Anfänger-Themen 12
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
K Wie kann ich "enter" von der Console in Eclipse löschen? Java Basics - Anfänger-Themen 2
E Objekte löschen Java Basics - Anfänger-Themen 9
AkiJou Zeile in 2d Array löschen Java Basics - Anfänger-Themen 2
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
berserkerdq2 Überprüfen ob eine Schreibberechtigung auf ein file exisitert bzw. ob man dieses file löschen kann, wie? Java Basics - Anfänger-Themen 9
J Zelleninhalt einer Jtable löschen Java Basics - Anfänger-Themen 2
G Bitte meinen Account löschen Java Basics - Anfänger-Themen 1
javapingu Jeglichen Inhalt einer Textdatei nach Zeile n löschen Java Basics - Anfänger-Themen 8
W Beitrag löschen Java Basics - Anfänger-Themen 1
O Doppelt verkette Liste Element löschen Java Basics - Anfänger-Themen 15
B Objekte, bspw. konkret Arraylists,manuell aus Speicher löschen? Java Basics - Anfänger-Themen 70
M Abfrage j/n und Bildschirm löschen Java Basics - Anfänger-Themen 3
J JTable Spalteninhalt löschen Java Basics - Anfänger-Themen 1
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
U Objekte in LinkedList löschen und editieren Java Basics - Anfänger-Themen 14
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
R Löschen und ausgeben eines Teilbaums Java Basics - Anfänger-Themen 3
V_Fynn03 Beliebiges Element in einer Liste löschen (Java)(Lineare Datenstrukturen) Java Basics - Anfänger-Themen 9
V_Fynn03 Lineare Datenstrukturen Element löschen? Java Basics - Anfänger-Themen 2
S Wann buffer löschen? Java Basics - Anfänger-Themen 5
S Windows printerqueue mit Java löschen Java Basics - Anfänger-Themen 3
M Objekt mit eindeutiger ID löschen, das nächste Objekt hat dann diese ID Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben