Doppelte Integer aus einem Array entfernen - seltsames Prob.

Status
Nicht offen für weitere Antworten.

Johnny23

Neues Mitglied
Hallo!
Ich möchte eine Funktion schreiben, die mehrfachvorkommende Einträge aus einem Integer Array entfernt (ohne irgendwelche Sonderfunktionen).

Soweit sogut - ich habe das nun auch geschafft - allerdings sortiert mein Programm aus mir vollkommen schleierhaften Gründen das Ergebnis. (Die Reihenfolge soll allerdings nicht verändert werden!!)


Ich habe im Code einige Kommentare eingefügt und es gibt Log Ausgaben.

Hauptprobleme sind zum einen, dass das array_in3 intern mit den ersten beiden Stellen als "0" gewertet wird und dass das Ergebnis seltsamerweise geordnet ist ...

Rauskommen müsste:
{0,1,3,4,2,5}
es kommt aber:
{0,1,2,3,4,5}

Keine Ahnung warum ...


Vielen Dank für Hilfe in irgendeiner Form ;)

Der Code:
Code:
public class KillDoubles {

	public static int[] DoIt(final int[] array_in) {
		int count = 0;
		int[] mid1 = new int [array_in.length];
		mid1 = array_in;
// Double Zähler: Zählt wie viele Elemente mehrfach vorkommen
		 int n = mid1.length;
		    int temp; 

		    for (int i=0; i < n-1; i=i+1)          
		      for (int j=n-1; j > i; j=j-1)        
		        if (mid1[j-1] > mid1[j])                 
		         {
		            temp = mid1[j-1];                
		            mid1[j-1] = mid1[j];                
		            mid1[j] = temp;                   
		         }

		
		for (int i = 0; i<mid1.length - 1; i++) {
			if (mid1[i] == mid1[i + 1]) count++;
		}
		System.out.println("Counter: " + count);
// Zähler End

// Erstellt das result Array mit so vielen Felder wie einzel vorkommende Elemente da sind
		int[] result = new int[array_in.length - count];
		count = 0;
               // SEHR seltsamer Fehler - bei dieser Ausgabe hat mein Array (im main definiert) die ersten beiden
		// Felder eine 0 als Zahl, obwohl es 0, 1 ist   - Was ist hier los?
		System.out.println(array_in[0]);
		System.out.println(array_in[1]);
		System.out.println(array_in[2]);
		boolean tag = false;

// Und los gehts mit der Hauptfunktion
		for(int i = 0; i<array_in.length; i++) {
			tag=false;
// Hier wird, falls das erste Element eine 0 ist ein klein wenig getrickst, da das leere Array ebenfalls mit 0 initialisiert ist
			if (i == 0 && array_in[i] == 0) {
				count++;
				System.out.println("ZERO"  + " i: " + i + " Count: " + count);
			} else {
// Schaut ob die Zahl schon im result array ist, wenn ja wird die "tag" variable auf true gesetzt und abgebrochen
			for (int y = count ; y>=0; y--) {
				if (result[y] == array_in[i]) {
					System.out.println("true" + " i: " + i + " Count: " + count + " Y " + y);
					tag = true;
					y = -1;
				}
			}
//wenn kein tag auf true gesetzt wurde, wird das aktuelle Element gespeichert
			if (tag == false) {
				result[count] = array_in[i];
				count++;
				System.out.println("false"  + " i: " + i + " Count: " + count);
				}
			 } 
		}
		
		return result;

	}

	public static void main(String[] args) {
		int[] array_in3 = { 0, 1, 3, 4, 2, 3, 4, 0, 5 };
		int[] array_in2 = { 6, 6, 6 };
		int[] out = DoIt(array_in3);
 		for (int i = 0; i < out.length; i++) {
			System.out.println("Nr." + i + " -> " + out[i]);
		}
	}

}
 

Ark

Top Contributor
Die Zeilen 12 bis 19 scheinen das Array zu sortieren, sieht bei oberflächlichem Hinsehen nach Bubble Sort aus.

Ark
 

Johnny23

Neues Mitglied
Ja, ist BubbleSort aber dient nur dazu zu zählen, wie oft Elemente in dem array mehrfach vorhanden sind.
Das sortierte Array wird danach verworfen und mit dem ursprünglichen final array_in (Eingabeparameter) weiter gemacht.

Ne Idee warum er bei array_in3 die ersten beiden Stellen als 0,0 wertet und nicht 0,1 .. ?
 

Landei

Top Contributor
Das sortierte Array wird danach verworfen und mit dem ursprünglichen final array_in (Eingabeparameter) weiter gemacht.
Arrays sind Objekte und Variablen sind Referenzen auf Objekte.
Code:
mid1 = array_in;
Jetzt hast du zwei Variablen, die auf dasselbe Array (also dieselbe Stelle irgendwo in deinem Speicher) zeigen.
Eine "Kopie" eines Arrays kannst du auf mehrere Arten erzeugen:
- mit einer guten alten for-Schleife kopieren
- man kann Arrays clonen (finde ich nicht so toll)
- am besten ist immer noch System.arrayCopy
 
G

Gast

Gast
Ich danke dir, das wars .. dachte das array wird dann einfach in das neue kopiert .. hmpf ..
 

Landei

Top Contributor
Weil Weihnachten ist: Ist das hier nicht ein klein wenig übersichtlicher?
Code:
import java.util.HashSet;
import java.util.Set;
...

    public static int[] removeDoublettes(int[] array) {
        int[] newArray = new int[array.length];
        System.arraycopy(array, 0, newArray, 0, array.length);
        int pos = 0;
        Set<Integer> set = new HashSet<Integer>();
        for(int i=0; i< array.length; i++) {
            if(! set.contains(array[i])) {
                set.add(array[i]);
                newArray[pos] = array[i];
                pos++;
            }
        }
        int[] returnArray = new int[pos];
        System.arraycopy(newArray, 0, returnArray, 0, pos);
        return returnArray;
    }
Nebenbei könnte man alles nochmal viel kürzer schreiben, wenn du statt int[] List<Integer> verwenden würdest. Solange es nicht um den letzten Tropfen Performance oder Speicher geht, ist List einfach bequemer (und es gibt auch performante Implementierungen, die intern int[] verwenden)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Argument in Integer verwandeln und das Doppelte davon printen Java Basics - Anfänger-Themen 9
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
W Map doppelte Values löschen Java Basics - Anfänger-Themen 3
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
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
P Doppelte Datensätze aus CSV-Datei löschen Java Basics - Anfänger-Themen 17
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
R Doppelte löschen Java Basics - Anfänger-Themen 6
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
R Schleife Doppelte Daten löschen Java Basics - Anfänger-Themen 3
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
T Array: Doppelte Charakteren löschen - Ein Lösungsversuch Java Basics - Anfänger-Themen 37
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
G doppelte Einträge im String Array löschen Java Basics - Anfänger-Themen 21
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
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
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
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
MoxMorris Integer.MAX_VALUE und Double.MAX_VALUE Unterschied Java Basics - Anfänger-Themen 3
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
sserio printf integer formatting Java Basics - Anfänger-Themen 17
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
H Uhrzeitespanne in Integer Wert umrechnen Java Basics - Anfänger-Themen 1
T Java Integer multiplizieren Java Basics - Anfänger-Themen 6
H Fehler bei integer Division Java Basics - Anfänger-Themen 28
D Methoden Plathhalter für Integer in einer Methode Java Basics - Anfänger-Themen 19
StevenGG Java swing "New Integer" Java Basics - Anfänger-Themen 5
C Integer in Vierer-Zahlblöcke aufteilen Java Basics - Anfänger-Themen 11
L integer Java Basics - Anfänger-Themen 6
Zeppi Integer umschreiben Java Basics - Anfänger-Themen 5
rafi072001 Integer Anomalie Java Java Basics - Anfänger-Themen 7
Eule25 Arbeit mit long und int, Error: integer number too large Java Basics - Anfänger-Themen 2
J Transformation zweier Integer in ein Double Java Basics - Anfänger-Themen 26
M Integer aus aus einer Klasse in andere speichern Java Basics - Anfänger-Themen 12
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
D Fibonacci overflow integer Java Basics - Anfänger-Themen 8
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
S Integer Wert wird nicht übernommen Java Basics - Anfänger-Themen 2
V int zu Integer und String Java Basics - Anfänger-Themen 6
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
M Regex zum Integer.parseInt Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben