Main Methode überschreibt Werte

cartilage

Mitglied
Hallo, innerhalb meiner Main Methode habe ich folgenden Code:

Java:
        int[] erster = new int[]{1,1,3,1,2,3,2};

	int[] zweiter = new int[]{2,1,3,1,1,2,3};

	int[] offspring1 = new int[erster.length];			
	offspring1=erster;
	
	int[] offspring2 = new int[erster.length];			
	offspring2=zweiter;
	
	
	//n-fache Ausführung
	for(int n=0; n<1; n++){
	int schnitt = new Double(Math.random()*2).intValue();  //Parameterwert setzen
	int weins = offspring1[schnitt];
	int wzwei = offspring2[schnitt];

	for(int k=schnitt+1; k<erster.length; k++){
		if(offspring1[k]==wzwei && offspring2[k]==weins){
			offspring1[k]=weins;
			offspring1[schnitt]=wzwei;
			offspring2[k]=wzwei;
			offspring2[schnitt]=weins;
			break;
		}	
	}
	}

Am Ende der Schleife sind meine beiden Variablen "erster" und "zweiter" überschrieben, mit den jeweiligen werten von "offspring1" und "offspring2".

Kann mir jemand erklären wieso das passiert und wie ich es verhindern kann? Hat es vll etwas mit den Speicherreferenzen zu tun?

Vielen Dank schonmal im voraus!!
 
Du hast nur zwei und nicht vier Arrays. Du hast nur vier Variablen. Vergleiche:
Java:
int[] val1 = {1, 2, 3};
int[] val2 = val1;
val2[1] = 9;
for (int i : val1) {
    System.out.println(i);
}
Mit:
Java:
int[] val1 = {1, 2, 3};
int[] val2 = val1.clone();
val2[1] = 9;
for (int i : val1) {
    System.out.println(i);
}
 
offspring1 und erster hängen also irgendwie zusammen, da hälst du es nicht für naheliegend, dies deiner Codezeile
> offspring1=erster;
anzulasten?

oder wenn doch und du irgendwelche Vermutungen/ Theorien hast, warum es trotzdem funktionieren könnte/ sollte/ müsste,
dann schreibe sie doch auf?
vermutest du dass diese Codezeile nur die Werte kopiert? (muss ich jetzt als Frage formulieren, hättest du schon erklären können)
dem ist nicht so, durch diese Codezeile zeigen beide Variablen exakt auf dasselbe Objekt,
Änderungen an der einen Variable wirken sich auf die andere genauso so aus,
wenn die Mutter von Prinz Harry stirbt, dann die Mutter von Prinz William leider genauso
 

Zurück
Oben