Theresa Marlin

Ranch Hand

Posts: 49

posted 7 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 7 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 7 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 7 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 7 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.

Campbell Ritchie

Marshal

Posts: 55707

163