Ok, so, for school, we have to write a program that calculates the value of Pi as accurately as possible. Earlier in the year, we worked with a "Turtle" program, it drew lines and circles, ect. it started in the center of the JFrame, and moved to where you told it to move to in the code. I'm using that here. If you've already messed with it (I don't know if you have or not) you can skip this part, it just describes them. basicly, the turtle has 5 commands in this program, sleep, move, paint, swingAround, and switchTo. sleep makes it do nothing for x number of milliseconds, move makes it turn x number of degrees to the left, and y number of pixels forwards, with out leaving a mark looks like this -> (x, y). paint does the same thing, but leaves a trail of color behind it. swingAround makes a circle with a radius of x.
sorry that took so long, if you want to take a look at the classes that you need to run my program, they can be found here:
http://www.cs.ccsu.edu/~jones/Turtlet.java
http://www.cs.ccsu.edu/~jones/Turtle.java
both are required to run the program.
now. what i have is this. The whole thing is commented pretty well, but if you have any questions, please ask. I really need help with this. the thing is, double pi will only equal a whole number, i can't get anything except for 0 in the decimal place...
/**
* Draw two circles. One has an area of Pi (3.1415...)
* and the other has an area of 4. Place random points
* in the circles to determin Pi.
*
* @author (Neil)
* @version (9/15/08)
*/
import java.util.Random;
import javax.swing.JOptionPane;
import java.lang.String;
import java.util.Scanner;
public class PiFinder
{
public static void main(String[] args)
{
Turtle sam = new Turtle(); // Create an object that can draw
Random rand1 = new Random(); // Random objects for later, used to
Random rand2 = new Random(); // randomize points in circles.
int angle = 0; // Stores the angle that the Turtle rotated
double distance = 0; // Stores the distance traveled by the Turtle
int numInside = 0; // Number of points in the inner circle
int numOutside = 0; // Number of points in the outter part of the bigger circle
String pointsToDraw = JOptionPane.showInputDialog(null, "How many points would you like to place?");
int pointsUser = Integer.parseInt( pointsToDraw ); // The number that the user chaose
int pointsPlaced = numInside + numOutside; // The total number of points placed so far
sam.swingAround (100); // Create the circle that has an area of Pi (for this, 100 = 1)
sam.swingAround ((4/3.141592654)*100); // Create the circle with an area of 4 (for this, 400 = 4) (the math is approx. 127.323)
while(pointsPlaced != pointsUser)
{
angle = rand1.nextInt(361); // Store the angle turned
distance = rand2.nextInt(127); // Store the distance moved
sam.move(angle, distance);
if( distance < 100)
{
numInside = numInside+1;
sam.switchTo(Turtle.RED); // Change color to red to distinguish sections
}
else
{
numOutside = numOutside+1;
sam.switchTo(Turtle.BLUE); // Change color to blue to distinguish sections
}
if(numOutside>1) // So you don't get: someNumber/0
{
double pi = (numInside/numOutside);
System.out.println("In: "+numInside+". " + "Out: " +numOutside+". " +"Pi equals: " +pi);
}
sam.paint(0,0); // Paint a dot in current location
sam.move(180, distance); // Turn around, move to starting position
sam.move(-1*angle+180, 0); // Turn to face left
sam.sleep(10); // Pause for 10 milliseconds
pointsPlaced = numInside + numOutside; // The total number of points placed so far
}
}
}