posted 8 years ago

I am learning how to create classes, and I had to create a class with a program to test it that finds the volume and surface area of a sphere, cylinder, and cone.

I am having some problems- for my cone Volume, it is returning everything as 0. For the program, I have

counter = 1;

System.out.println("Cone Volume");

while (counter <= 10)

{

double radius = Math.random();

System.out.println("Radius: " + radius);

double h = Math.random();

System.out.println("H: " + h);

double coneVolume = yourTurnClass.coneVolume(radius,h);

System.out.println("answer: " + coneVolume);

counter++;

}

________

For the class I have:

public static double coneVolume(double radius, double h)

{

answer = (1/3*((Math.PI)*((radius*radius)*(h))));

return answer;

}

_________

Am I messing something up with pi?

Another problem I have is with coneSurface- I have formula:

public static double coneSurface(double radius, double h)

{

answer = (Math.PI*(radius*(Math.sqrt(h*h + radius*radius) + radius*radius)));

return answer;

}

and program

while (counter <= 10)

{

double radius = Math.random();

System.out.println("Radius: " + radius);

double h = Math.random();

System.out.println("H: " + h);

double coneSurface = yourTurnClass.coneSurface(radius,h);

System.out.println("answer: " + coneSurface);

counter++;

}

and my answers are coming out a bit off. Did I miss my formula up, or call something wrong?

My final problem is with the sphere volume- I have class

public static double sphereVolume(double radius)

{

answer = ((4/3)*(Math.PI)*(radius*radius*radius));

return answer;

}

and program

while (counter <= 10)

{

double radius = Math.random();

System.out.println("Radius: " + radius);

double sphereVolume = yourTurnClass.sphereVolume(radius);

System.out.println("answer: " + sphereVolume);

counter++;

}

_______

with answers slightly wrong again. Is there something I am doing wrong that is the same with all three of these?

THANK YOU SO MUCH FOR YOUR HELP!!!

I am having some problems- for my cone Volume, it is returning everything as 0. For the program, I have

counter = 1;

System.out.println("Cone Volume");

while (counter <= 10)

{

double radius = Math.random();

System.out.println("Radius: " + radius);

double h = Math.random();

System.out.println("H: " + h);

double coneVolume = yourTurnClass.coneVolume(radius,h);

System.out.println("answer: " + coneVolume);

counter++;

}

________

For the class I have:

public static double coneVolume(double radius, double h)

{

answer = (1/3*((Math.PI)*((radius*radius)*(h))));

return answer;

}

_________

Am I messing something up with pi?

Another problem I have is with coneSurface- I have formula:

public static double coneSurface(double radius, double h)

{

answer = (Math.PI*(radius*(Math.sqrt(h*h + radius*radius) + radius*radius)));

return answer;

}

and program

while (counter <= 10)

{

double radius = Math.random();

System.out.println("Radius: " + radius);

double h = Math.random();

System.out.println("H: " + h);

double coneSurface = yourTurnClass.coneSurface(radius,h);

System.out.println("answer: " + coneSurface);

counter++;

}

and my answers are coming out a bit off. Did I miss my formula up, or call something wrong?

My final problem is with the sphere volume- I have class

public static double sphereVolume(double radius)

{

answer = ((4/3)*(Math.PI)*(radius*radius*radius));

return answer;

}

and program

while (counter <= 10)

{

double radius = Math.random();

System.out.println("Radius: " + radius);

double sphereVolume = yourTurnClass.sphereVolume(radius);

System.out.println("answer: " + sphereVolume);

counter++;

}

_______

with answers slightly wrong again. Is there something I am doing wrong that is the same with all three of these?

THANK YOU SO MUCH FOR YOUR HELP!!!

posted 8 years ago

Did you look at the API for Math.random()?

It generates a double between 0 and 1. Most people multiply it by a number (say 10) to get a random number (say 0 through 10).

Your problems might stem from the numbers being too small to calculate a valid volume, surface, etc....

Just a thought...

It generates a double between 0 and 1. Most people multiply it by a number (say 10) to get a random number (say 0 through 10).

Your problems might stem from the numbers being too small to calculate a valid volume, surface, etc....

Just a thought...

When you do things right, people won't be sure you've done anything at all.

posted 8 years ago

Therese, please Use Code Tags.

SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6 - OCEJPAD 6

How To Ask Questions How To Answer Questions

posted 8 years ago

the problem is here: answer = (1/3*((Math.PI)*((radius*radius)*(h))));

your '1' is an int literal. your '3' is an int literal. when you have an int divided by an int, the result is...an int. 1 / 3 = 0 in integer division.

Try changing it to "answer = (1.0/3*((Math.PI)*((radius*radius)*(h))));

update: I see that same issue with your "4/3" as well...

your '1' is an int literal. your '3' is an int literal. when you have an int divided by an int, the result is...an int. 1 / 3 = 0 in integer division.

Try changing it to "answer = (1.0/3*((Math.PI)*((radius*radius)*(h))));

update: I see that same issue with your "4/3" as well...

There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors

posted 8 years ago

It's almost like Java failed out of elementary division. LOL

When you do things right, people won't be sure you've done anything at all.

It is sorta covered in the JavaRanch Style Guide. |