Earth Orbitting the Sun simulation Object Array not printing correctly java -
i'm trying simulate earths orbit around sun making print out current position. i'm new java , unable print "newp" array correctly within loop. @ moment i'm using-
system.out.println(arrays.deeptostring(newp)); i've tried:
system.out.println(arrays.tostring(newp)); to no avail. i've imported java util array well, i'm not sure why not working. no other errors appearing in code either. loop of code below:
do{ physicsvector[] y = new physicsvector[gravfield.length]; y=copyarray(gravfield); for(int i=0; i<planets.length;i++){ newp[i] = planets[i].updateposition(position[i], velocity[i], timestep, gravfield[i]); } for(int j=0; j<gravityobject.length; j++){ for(int l=0;l<gravityobject.length;l++){ if(j!=l){ newgrav[j].increaseby(gravityobject[j].aduetogravity(planetmass[l], newp[l], newp[j])); } } } for(int k=0; k<planets.length; k++){ newvel[k] = planets[k].updatevelocity(velocity[k], timestep, y[k], newgrav[k]); } time+=timestep; double x = newp[0].getx(); double ap = newp[0].gety(); n.println(x+" "+ap); system.out.println(arrays.deeptostring(newp)); }while (timestep<(24*60*60*365.25)); the output when trying print array in loop below
[physicsvector@15db9742, physicsvector@6d06d69c, physicsvector@7852e922] [physicsvector@15db9742, physicsvector@6d06d69c, physicsvector@7852e922] [physicsvector@15db9742, physicsvector@6d06d69c, physicsvector@7852e922] [physicsvector@15db9742, physicsvector@6d06d69c, physicsvector@7852e922] the output i'm expecting list of vectors. in advance.
you're seeing output of default tostring() implementation defined in java.lang.object class. different output have 2 main options
override
tostring()in physicsvector class return kind of formatted string of objects contents. involves adding method physicsvector class like...public class physicsvector { .... @override public string tostring() { return "physicsvector[" + this.getx() + ", " + this.gety() + "]"; }convert physicsvector[] string[] using kind of map. in java8 might like
final string[] outputarray = arrays.stream(newp).map((p) -> "physicsvector[" + p.getx() + ", " + p.gety() + "]").toarray()
if you're not using java8 might need use loop...
final string[] outputarray = new string[newp.length] (int = 0; i< newp.length; i++) { outputarray[i] = "physicsvector[" + newp[i].getx() + ", " + newp[i].gety() + "]"; }
Comments
Post a Comment