The Artima Developer Community
Sponsored Link

Legacy Java Answers Forum
July 2000

Advertisement

Advertisement

This page contains an archived post to the Java Answers Forum made prior to February 25, 2002. If you wish to participate in discussions, please visit the new Artima Forums.

Message:

wrong number of arguments in constructor and

Posted by harishreddy on April 09, 2001 at 6:09 AM

mport java.applet.*;
import java.awt.*;
public class buff extends Applet implements Runnable
{
Dimension offDimension, d; // Variables used to create an
Image offImage; // offscreen image via the update()
Graphics offGraphics; // method, to reduce flicker
int needleLength = 20;
int numRows = 10;
int xBorder = 15; // Basic layout variables
int yBorder = 45;
int margin = 50;
int tableHeight = needleLength*numRows; //
int tableWidth = 200; // Define size of table
int tableXcorner = xBorder; // where needles are thrown
int tableYcorner = yBorder; //
int barWidth = 20; // Define size of bar graph
int barHeight = tableHeight;
int barXcorner = xBorder+tableXcorner+tableWidth+margin;
int barYcorner = tableYcorner;
double barTop = 3.24; // Set limits for limits of bar graph
double barBot = 3.04;
double barMid = (barTop+barBot)/2;
int barValue; // Dynamic value of the bar graph
int plotWidth = 200; // Define size of plot
int plotHeight = tableHeight;
int plotXcorner = barXcorner+margin+barWidth+xBorder;
int plotYcorner = tableYcorner;
double plotMax = 4; // Set limits on the plot
double plotMin = 2;
double plotMid = (plotMax+plotMin)/2;
int barMaxPlot = (int) (plotHeight*(plotMax-barTop)/
(plotMax-plotMin));
int barMinPlot = (int) (plotHeight*(plotMax-barBot)/
(plotMax-plotMin));
int barThick=(barMaxPlot==barMinPlot? 1 :
barMinPlot-barMaxPlot);
int pointerWidth=30; // Bar graph pointer
int pointerTop, pointerBot;
int power = 5; // Orders of magnitude for the x-axis of the plot
int n = 0; // The number of needles thrown
int hit = 0; // The number of needles which hit lines
int i = 1; //
double needleX1, needleX2, needleY1, needleY2;
double deltaX, deltaY;
int ysign;
final double piValue=2.0*Math.atan(1.0);
int x1, x2, y1, y2; // Used to draw needles
int gx1, gx2, gy1, gy2; // Used to make the plot
int speed = 20; // Sets speed with try-catch block
double h = 0; // double version of the number of hits
double estPi, prevEstPi; // Estimates of pi
double prob = 1; // Ratio of hits to trys
double prev = 1; // Ratio on the previous trial
boolean oldScreen = false;
boolean begin = false;
Thread t;
Button b1, b2,b3,b4;
public void init()
{
setLayout(new FlowLayout(FlowLayout.LEFT));
b1 = new Button("Start");
b2 = new Button("Slower");
b3 = new Button("Faster");
b4 = new Button("Done");
add(b1);
add(b2);
add(b3);
add(b4);
t = new Thread(this);
t.start();
}
public boolean action(Event e, Object o)
{
if (o.equals("Start"))
{
n = 0;
hit = 0;
oldScreen = false;
begin = true;
}
else if (o.equals("Done"))
{
t.stop();
}
else if (o.equals("Faster"))
{
speed = (speed>10? speed-10 : 10);
}
else if (o.equals("Slower"))
{
speed = speed+10;
}
return true;
}
public void run()
{
while(true)
{
if(begin)
{
// Calculate the position of the needle ends...
needleX1 = tableWidth*Math.random();
needleY1 = tableHeight*Math.random();
deltaX = needleLength*Math.sin(2*piValue*Math.random()-piValue);
deltaY = Math.sqrt(needleLength*needleLength-deltaX*deltaX);
needleX2 = needleX1+deltaX;
ysign = (Math.random()<0.5? -1 : 1);
needleY2 = needleY1+ysign*deltaY;
// Check to see if it crosses a line...
for (int yLine=0; yLine<=needleLength*numRows; yLine+=needleLength)
{
if((needleY1<=yLine && needleY2>=yLine) ||
(needleY1>=yLine && needleY2<=yLine))
{
hit++;
break;
}
}
n++;
prev = prob;
h = hit;
prob = h/n;
prevEstPi = 2/prev;
estPi = 2/prob;
// Calculation for the plot
gx1 = (int)(plotXcorner+Math.log(n)*plotWidth/(power*Math.log(10)));
gx2 = (int)(plotXcorner+Math.log(n+1)*plotWidth/(power*Math.log(10)));
gy1 = (int)(plotYcorner+(plotHeight/(plotMin-plotMax))*
(prevEstPi-plotMax));
if (gy1<=plotYcorner) gy1 = plotYcorner+1;
if (gy1==plotYcorner+plotHeight) gy1=gy1-1;
gy2 = (int)(plotYcorner+(plotHeight/(plotMin-plotMax))*
(estPi-plotMax));
if (gy2<=plotYcorner) gy2 = plotYcorner+1;
if (gy2==plotYcorner+plotHeight) gy2=gy2-1;
// Calculation for drawing the needles
x1 = (int) (xBorder+needleX1);
x2 = (int) (xBorder+needleX2);
y1 = (int) (yBorder+needleY1);
y2 = (int) (yBorder+needleY2);
repaint();
}
try
{
Thread.currentThread().sleep(speed);
}
catch(InterruptedException e)
{
}
}
}
public void paint(Graphics g)
{
d = size();
update(g);
}
public void update(Graphics g)
{
if((offGraphics==null) // Setup an off-screen image
||(d.width!=offDimension.width) // via the update() method.
|| (d.height!=offDimension.height)) //
{
offDimension = d;
offImage = createImage(d.width, d.height);
offGraphics = offImage.getGraphics();
}
if(!oldScreen)
{
offGraphics.setColor(getBackground());
offGraphics.fillRect(0,0, d.width, d.height);
offGraphics.setColor(Color.gray);
offGraphics.fillRect(plotXcorner, plotYcorner+barMaxPlot,
plotWidth, barMinPlot-barMaxPlot);
offGraphics.drawString(" "+barMid+"-", barXcorner-45,
barYcorner+barHeight/2);
offGraphics.drawString(" "+barTop+"-", barXcorner-45,
barYcorner+5);
offGraphics.drawString(" "+barBot+"-", barXcorner-45,
barYcorner+3+barHeight);
offGraphics.drawString("-"+plotMax, plotXcorner+plotWidth+2,
plotYcorner+5);
offGraphics.drawString("-"+plotMin, plotXcorner+plotWidth+2,
plotYcorner+plotHeight+5);
offGraphics.drawString("-"+plotMid, plotXcorner+plotWidth+2,
plotYcorner+plotHeight/2+5);
offGraphics.drawString("Estimate vs. log(number of tries)",
plotXcorner+5, plotYcorner+plotHeight+20);
// Draw lines which relate the bar graph and the plot...
offGraphics.drawLine(barXcorner+barWidth+5, barYcorner,
plotXcorner-5, barMaxPlot+plotYcorner);
offGraphics.drawLine(barXcorner+barWidth+5, barYcorner+barHeight,
plotXcorner-5, barMinPlot+plotYcorner);
// Draw tabletop and the plot axes
offGraphics.setColor(Color.blue);
offGraphics.drawRect(tableXcorner,tableYcorner, tableWidth, tableHeight);
offGraphics.drawRect(plotXcorner, plotYcorner,plotWidth, plotHeight);
for(i=1; i {
offGraphics.drawLine(tableXcorner, tableYcorner+needleLength*i,
tableXcorner+tableWidth, tableYcorner+needleLength*i);
}
oldScreen = true;
}
else
{
offGraphics.setColor(getBackground());
offGraphics.fillRect(0,0, d.width, yBorder-10);
}
// Write n and estPi to screen
offGraphics.setColor(Color.black);
offGraphics.drawString("Current estimate of pi: "+estPi,
plotXcorner+10, 20);
offGraphics.drawString("Number of tries: "+n, 220, 20);
offGraphics.setColor(Color.black);
// Make sure that none of the needles appear outside
// the table boundary:
x1 = (x1tableXcorner+tableWidth?
tableXcorner+tableWidth:x1);
x2 = (x2tableXcorner+tableWidth?
tableXcorner+tableWidth:x2);
y1 = (y1tableYcorner+tableHeight?
tableYcorner+tableHeight:y1);
y2 = (y2tableYcorner+tableHeight?
tableYcorner+tableHeight:y2);
offGraphics.drawLine(x1,y1,x2,y2);
// Draw the bar graph
offGraphics.setColor(Color.gray);
offGraphics.fillRect(barXcorner, barYcorner, 20, barHeight);
offGraphics.setColor(Color.red);
barValue = (int)(barHeight*(estPi-barTop)/(barBot-barTop));
if (barValue<0-pointerWidth/2) barValue=0-pointerWidth/2;
if (barValue>barHeight+pointerWidth/2) barValue=barHeight+
pointerWidth/2;
pointerTop = (barValue-pointerWidth/2<0 ?
0 : barValue-pointerWidth/2);
pointerBot = (barValue+pointerWidth/2>barHeight?
barHeight : barValue+pointerWidth/2);
offGraphics.fillRect(barXcorner, barYcorner+pointerTop,
barWidth, pointerBot-pointerTop);
// Center line in the pointer
offGraphics.setColor(Color.gray);
if (barValue<0) barValue=0;
if (barValue>barHeight) barValue=barHeight;
offGraphics.drawLine(barXcorner, barYcorner+barValue,
barXcorner+barWidth-1, barYcorner+barValue);
// Finally, draw the plot
offGraphics.setColor(Color.red);
offGraphics.drawLine(gx1,gy1,gx2,gy2);
g.drawImage(offImage, 0, 0, this);
}
}





Replies:

Sponsored Links



Google
  Web Artima.com   
Copyright © 1996-2009 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use - Advertise with Us