• Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

We're also offering banner ads on our site from just \$5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.

# Kirkula

Member Since 20 Aug 2008
Offline Last Active Jan 08 2013 12:20 AM

### Help me figure out what I'm doing wrong, please!

16 September 2012 - 07:15 PM

So I've read a good bit of a couple of books on Java. Java: The Complete Reference 8th edition by oracle press, and Java: How to Program 8th edition by Deitel. Mind you, I never finished either book, only halfway through each, so maybe that's why I can't figure this out. Or perhaps I'm just being a complete retard that's been working all day on his first real class and has brain freeze, lol. So anyway, here's the code:

[source lang="java"]import java.util.Random;public class Planet { private Random rand; private double mass; private double xPos, yPos; private double xVel, yVel; /** constructors */ Planet(){ setMass(); setPos(); setVelocity(); } Planet(double m){ mass = m; setPos(); setVelocity(); } Planet(double x, double y){ setMass(); xPos = x; yPos = y; setVelocity(); } Planet(double x, double y, double m){ mass = m; xPos = x; yPos = y; setVelocity(); } Planet(double x, double y, double i, double j, double m){ mass = m; xPos = x; yPos = y; xVel = i; yVel = j; } /** returns distance from calling object * * @param x is the xPos of the calling object * @param y is the yPos of the calling object */ double distance(double x, double y){ double distX = Math.abs(xPos - x); double distY = Math.abs(yPos - y); return Math.sqrt(distX * distX + distY * distY); } /** returns unit-length x vector pointing from this to calling object * * @param x is the xPos of calling object * @param dist is the value returned from distance() */ double dirX(double x, double dist){ return (x - xPos) / dist; } /** returns unit-length y vector pointing from this to calling object * * @param y is the yPos of calling object * @param dist is the value returned from distance() */ double dirY(double y, double dist){ return (y - yPos) / dist; } /** calculates acceleration scalar for calling object * * @param m is the mass of the calling object * @param dist is the value returned from distance() */ double accelScalar(double m, double dist){ return (6.674e-11 * m) / (dist * dist); } /** translates this object on XY plane. * should be called before accelerate. */ void translate(){ xPos += xVel; yPos += yVel; } /** determines delta V for calling object. * should be called after translate. * * @param as is the value returned from accelScalar() * @param dX is the value returned from dirX() * @param dY is the value returned from dirY() */ void accelerate(double as, double dX, double dY){ xVel += as * dX; yVel += as * dY; } void setMass(){ double d = rand.nextDouble() * 10.0; int e = (Math.abs(rand.nextInt()) % 6) + 22; setMass(d, e); } void setMass(double d, int e){ mass = Math.pow(d, e); } void setPos(){ int w = 800; int h = 600; double x = rand.nextDouble() * w; double y = rand.nextDouble() * h; setPos(x, y); } void setPos(double x, double y){ xPos = x; yPos = y; } void setVelocity(){ double x = rand.nextDouble() * 50000.0; double y = rand.nextDouble() * 50000.0; setVelocity(x, y); } void setVelocity(double x, double y){ xVel = x; yVel = y; } double[] getPos(){ double[] pos = {xPos, yPos}; return pos; } double[] getVelocity(){ double[] vel = {xVel, yVel}; return vel; } double getXPos(){ return xPos; } double getYpos(){ return yPos; } double getXVelocity(){ return xVel; } double getYVelocity(){ return yVel; } public String toString(){ return "X: " + xPos + "\tY: " + yPos; } }[/source]

I'm getting a NullPointerException argument at line 129, the setMass() method. It works perfectly fine when I build the object using the full set of constructor arguments. Can anyone tell me where my problem is?

### VC# '05, or VC# '08....which one should I learn on?

21 August 2008 - 11:13 AM