| Author |
geometry in java
|
Theresa Marlin
Ranch Hand
Joined: Sep 23, 2009
Posts: 49
|
|
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!!!
|
 |
Janeice DelVecchio
Saloon Keeper
Joined: Sep 14, 2009
Posts: 1611
|
|
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...
|
When you do things right, people won't be sure you've done anything at all.
|
 |
Rob Spoor
Sheriff
Joined: Oct 27, 2005
Posts: 19216
|
|
|
Therese, please Use Code Tags.
|
SCJP 1.4 - SCJP 6 - SCWCD 5
How To Ask Questions How To Answer Questions
|
 |
fred rosenberger
lowercase baba
Bartender
Joined: Oct 02, 2003
Posts: 9939
|
|
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...
|
Never ascribe to malice that which can be adequately explained by stupidity.
|
 |
Janeice DelVecchio
Saloon Keeper
Joined: Sep 14, 2009
Posts: 1611
|
|
|
It's almost like Java failed out of elementary division. LOL
|
 |
Campbell Ritchie
Sheriff
Joined: Oct 13, 2005
Posts: 32604
|
|
Janeice DelVecchio wrote:It's almost like Java failed out of elementary division. LOL
No, it was given elementary division and stayed with what it was familiar with
|
 |
fred rosenberger
lowercase baba
Bartender
Joined: Oct 02, 2003
Posts: 9939
|
|
|
There are plenty of times when you WANT the integer division. when combined with the modulus operator, you can do some cool stuff.
|
 |
 |
|
|
subject: geometry in java
|
|
|