-
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);
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)a-10*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=a-10*Math.sqrt(3);
double c=(getHeight());
double d=a+10*Math.sqrt(3);
myPoly.addPoint(a,0);
myPoly.addPoint(b,10);
myPoly.addPoint(b,c-10);
myPoly.addPoint(a,c);
myPoly.addPoint(d,c-10);
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)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
-
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)(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;
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
|
Top DevX Stories
Easy Web Services with SQL Server 2005 HTTP Endpoints
JavaOne 2005: Java Platform Roadmap Focuses on Ease of Development, Sun Focuses on the "Free" in F.O.S.S.
Wed Yourself to UML with the Power of Associations
Microsoft to Add AJAX Capabilities to ASP.NET
IBM's Cloudscape Versus MySQL
|
Bookmarks