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:
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]);
}
}
}