Moin,
ich habe einen Konstruktor geschrieben, in dem überprüft wird, ob dieser Array-Inhalt schon einmal vergeben wurde. Dazu habe ich aber ein paar Fragen.
[CODE lang="java" title="class Position"]public Positionen(int ANZAHL, int X, int Y) {
x = new Koordinate[ANZAHL];
for (int i = 0; i < ANZAHL; i++) {
x = new Koordinate(X,Y);
for (int j = 0; j < i; j++) {
if (x.equals(x[j])) {
System.out.println("doppelt" + i);
i--;
}
}
}
}[/CODE]
[CODE lang="java" title="class Koordinate"]public boolean equals(Koordinate vgl) {
return this.x ==vgl.x && this.y==vgl.y;
}[/CODE]
Wenn ich jetzt alles ausführe, werden mir alle (10) Werte ausgegeben, auch wenn welche doppelt sind, werden am Ende 10 verschiedene Werte zurückgegeben, plus den markierten doppelten Wert. Aber wo genau wird dann der Wert, der doppelt ist, ersetzt? Außerdem steht doch in
Vielleicht kann mir das ja jemand kurz erklären.
Danke Zeppi
ich habe einen Konstruktor geschrieben, in dem überprüft wird, ob dieser Array-Inhalt schon einmal vergeben wurde. Dazu habe ich aber ein paar Fragen.
[CODE lang="java" title="class Position"]public Positionen(int ANZAHL, int X, int Y) {
x = new Koordinate[ANZAHL];
for (int i = 0; i < ANZAHL; i++) {
x = new Koordinate(X,Y);
for (int j = 0; j < i; j++) {
if (x.equals(x[j])) {
System.out.println("doppelt" + i);
i--;
}
}
}
}[/CODE]
[CODE lang="java" title="class Koordinate"]public boolean equals(Koordinate vgl) {
return this.x ==vgl.x && this.y==vgl.y;
}[/CODE]
Wenn ich jetzt alles ausführe, werden mir alle (10) Werte ausgegeben, auch wenn welche doppelt sind, werden am Ende 10 verschiedene Werte zurückgegeben, plus den markierten doppelten Wert. Aber wo genau wird dann der Wert, der doppelt ist, ersetzt? Außerdem steht doch in
x[i] und x[j]
das gleiche oder? Wird als erstes x[i]
gefüllt, oder wird jeder Wert erstmal reingetan und gleich verglichen und danach der zweite Wert etc.? Sind nicht beim ersten Durchgang die Werte von x[i] und x[j]
automatisch gleich? Denn dann steht doch beim ersten Durchgang x[0] und x[0]
und die müssten ja gleich sein. //Vermutlich steht doch am Anfangt nicht das Gleiche, da i-- und j++ geht.Vielleicht kann mir das ja jemand kurz erklären.
Danke Zeppi
Zuletzt bearbeitet: