Ich habe Das Problem eine meiner Methoden die Übergabeparameter verändert.
Ich weiss dass es in C so ist, dass wenn man eine Variable in ein Unterprogramm übergiebt, immer eine Kopie erstellt wird, und ich habe an mehreren orten gelesen(z.b. Roland Geyer Tutorials Java - Methode), das in Java genau gleich ist.
und bei gewissen Methoden ist das auch so
Jedoch habe ich das Problem das, dass bei einer Methode nicht mehr so ist
funktioniert nicht, nur wenn ich erst eine Kopie des Objektes erstelle
[JAVA=18]
public static Position calcPosition (Arrow pfeil, double min, double max, double value)
{
Arrow pfeil2 = new Arrow(pfeil);
pfeil2.setLength(calcLength(pfeil2,min,max,value));
return pfeil2.getEnd();
}[/code]
So funktioniert es.
Warum geht die erste Variante nicht, und was kann ich sonst dagegen tun?
Ich weiss dass es in C so ist, dass wenn man eine Variable in ein Unterprogramm übergiebt, immer eine Kopie erstellt wird, und ich habe an mehreren orten gelesen(z.b. Roland Geyer Tutorials Java - Methode), das in Java genau gleich ist.
und bei gewissen Methoden ist das auch so
Java:
public void plus (int x)
{
x=x+4;
}
public void methode1 ()
{
int x=0;
plus(x);
//x ist immer noch null
}
Jedoch habe ich das Problem das, dass bei einer Methode nicht mehr so ist
Java:
public static void drawSkale (Arrow Achse,double min,double max, Graphics grafik)
{
int exponent;
double factor;
double raster, posRaster;
Achse.drawArrow(grafik);
/*Berechnungen*/
for(posRaster=((int)(min/raster))*raster;posRaster<max;posRaster+=raster)
{
Kreis.drawKreis(calcPosition(Achse,min,max,posRaster),3,grafik);
}
}
public static Position calcPosition (Arrow pfeil, double min, double max, double value)
{
pfeil.setLength(calcLength(pfeil,min,max,value));
return pfeil.getEnd();
}
funktioniert nicht, nur wenn ich erst eine Kopie des Objektes erstelle
[JAVA=18]
public static Position calcPosition (Arrow pfeil, double min, double max, double value)
{
Arrow pfeil2 = new Arrow(pfeil);
pfeil2.setLength(calcLength(pfeil2,min,max,value));
return pfeil2.getEnd();
}[/code]
So funktioniert es.
Warum geht die erste Variante nicht, und was kann ich sonst dagegen tun?