File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Beginning Java and the fly likes geometry in java Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "geometry in java" Watch "geometry in java" New topic
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: 1726
    
  12

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: 19761
    
  20

Therese, please Use Code Tags.


SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11479
    
  16

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


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

Joined: Sep 14, 2009
Posts: 1726
    
  12

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

Joined: Oct 13, 2005
Posts: 39834
    
  28
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: 11479
    
  16

There are plenty of times when you WANT the integer division. when combined with the modulus operator, you can do some cool stuff.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: geometry in java