
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)a10*Math.sqrt(3);
myPoly.addPoint(a,0);
myPoly.addPoint(b,10);
myPoly.addPoint(b,30);
g2.fill(myPoly);
and it gives me:
Possible loss of precision on the
int b=(int)a10*Math.sqrt(3); line
please help me out, thanks in advanced

scratch that, this is the new code im using:
Graphics2D g2= (Graphics2D)g;
Polygon myPoly = new Polygon();
double a=(getWidth()/2);
double b=a10*Math.sqrt(3);
double c=(getHeight());
double d=a+10*Math.sqrt(3);
myPoly.addPoint(a,0);
myPoly.addPoint(b,10);
myPoly.addPoint(b,c10);
myPoly.addPoint(a,c);
myPoly.addPoint(d,c10);
myPoly.addPoint(d,10);
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?

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)a10*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

thanks a bunch man, that fixed a lot hah. Never thought i needed parenthesees to make the whole line casted into an int!

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)(a10)*Math.sqrt(3);
int b=(int)(a10*Math.sqrt(3));
are all different. if possible, use many parenthesis and spaces, to better outline what will be calculated etc:
int b= ( (int)(a10*Math.sqrt(3)) ) +20;
Posting Permissions
 You may not post new threads
 You may not post replies
 You may not post attachments
 You may not edit your posts

Forum Rules

Development Centers
 Android Development Center
 Cloud Development Project Center
 HTML5 Development Center
 Windows Mobile Development Center
