Hallo zusammen,
eigentlich versteh ich die Welt nicht mehr. Ich will einen Wert in einem best. Array ändern, dabei ändern sich 2 Werte in 2 Arrays
[highlight=Java]private void runden(double[] fv, double[] nk, double[] tmpnk, double zi) {
double ziel = 0;
double max = nk[0];
int pos = 0;
for(int i=0; i<tmpnk.length; i++) {
if(tmpnk > max) {
max = tmpnk;
pos = i;
tmpnk = -1.0;
}
}
// um 1 erhöhen
fv[pos] = fv[pos] + 1;
// Summe prüfen
for(int j=0; j<fv.length; j++) {
ziel = ziel + fv[j];
}
if(ziel < zi) {
runden(fv, nk, tmpnk, ziel);
}
else {
for(int k=0; k<fv.length; k++) {
System.out.println(fv[k]);
}
}
}[/highlight]
In Zeile 11 steht doch ausdrücklich, dass sich nur der Wert an der Stelle i im Array tmpnk ändern soll. Aber auf wundersame Weise (im Eclipse-Debugger kann ich das schön beobachten, dass das zeitgleich passiert) ändert sich auch der Wert im Array nk an der Stelle i auf -1.0 - warum?
Was mach ich falsch - mag mir jemand helfen?
Danke und Grüße,
muemmel_0811
eigentlich versteh ich die Welt nicht mehr. Ich will einen Wert in einem best. Array ändern, dabei ändern sich 2 Werte in 2 Arrays
[highlight=Java]private void runden(double[] fv, double[] nk, double[] tmpnk, double zi) {
double ziel = 0;
double max = nk[0];
int pos = 0;
for(int i=0; i<tmpnk.length; i++) {
if(tmpnk > max) {
max = tmpnk;
pos = i;
tmpnk = -1.0;
}
}
// um 1 erhöhen
fv[pos] = fv[pos] + 1;
// Summe prüfen
for(int j=0; j<fv.length; j++) {
ziel = ziel + fv[j];
}
if(ziel < zi) {
runden(fv, nk, tmpnk, ziel);
}
else {
for(int k=0; k<fv.length; k++) {
System.out.println(fv[k]);
}
}
}[/highlight]
In Zeile 11 steht doch ausdrücklich, dass sich nur der Wert an der Stelle i im Array tmpnk ändern soll. Aber auf wundersame Weise (im Eclipse-Debugger kann ich das schön beobachten, dass das zeitgleich passiert) ändert sich auch der Wert im Array nk an der Stelle i auf -1.0 - warum?
Was mach ich falsch - mag mir jemand helfen?
Danke und Grüße,
muemmel_0811