# filling a hexagon(very basic!)

• 06-16-2004, 03:46 PM
makkunbakkun
filling a hexagon(very basic!)
Hey guys, I started learning Java a couple days ago, and my teacher gave me a assignment to make this hexagon that will stretch with the applet and such. I know that int's wont hold decimals but the doubles wont work either for some reason. Now this is the code I am using and the errors it gives are below:
public void paint(Graphics g) {
Graphics2D g2= (Graphics2D)g;
Polygon myPoly = new Polygon();
int a=(getWidth()/2);
int b=(int)a-10*Math.sqrt(3);
g2.fill(myPoly);

and it gives me:
Possible loss of precision on the
int b=(int)a-10*Math.sqrt(3); line
• 06-16-2004, 04:19 PM
makkunbakkun
scratch that, this is the new code im using:
Graphics2D g2= (Graphics2D)g;
Polygon myPoly = new Polygon();
double a=(getWidth()/2);
double b=a-10*Math.sqrt(3);
double c=(getHeight());
double d=a+10*Math.sqrt(3);
g2.fill(myPoly);
And the Errors:
addpoint(int,int) in java.awt.Polygon cannot be applied to (double,int)
and it goes on like that for each point i plotted, what am I doing wrong?
• 06-16-2004, 09:57 PM
Drain
Quote:

addpoint(int,int) in java.awt.Polygon cannot be applied to (double,int)
So, that means that the method addpoint requires two integers to be passed to it, and you are giving it a double and an integer, so it can't deal with it.

Instead of making doubles, you should cast them to integers, or perhaps round them off.

The reason this:
Code:

`int b=(int)a-10*Math.sqrt(3);`
didn't work was because you only casted the a variable to an int, and not the whole thing. Try using parentheses.

Edit to also note: There are no fractional pixels, so that's why using doubles makes no sense ;)
• 06-17-2004, 01:56 PM
makkunbakkun
thanks a bunch man, that fixed a lot hah. Never thought i needed parenthesees to make the whole line casted into an int!
• 06-18-2004, 07:37 AM
cjard
parenthesis are the standard indicator of casting. you should additionally include other parenthesis to indicate what should be cast..

int b=(int)(a)-10*Math.sqrt(3);
int b=(int)(a-10)*Math.sqrt(3);
int b=(int)(a-10*Math.sqrt(3));

are all different. if possible, use many parenthesis and spaces, to better outline what will be calculated etc:

int b= ( (int)(a-10*Math.sqrt(3)) ) +20;