1. Member Join Date
Mar 2013
Posts
2
Rep Power
0

## Calculating Pi

Hi,

New to the forum! Gotten a bit stuck on a bit of coding i'm doing for a class, wondered if you could help me at all.

The program is supposed to generate two random numbers and input them to the equation X^2+Y^2, this can then used to calculate Pi.
Anyways, the code works and does generate a value close to pi, i am now trying to adapt it so that the user can input the number of random trials so it
reaches a desired accuracy, which is where i run into a problem. If you where to enter 10 trials, then 100, then a thousand it doesn't simple calculate pi for this many trials. The third entry would calculate pi for 1110 trials. Is there anyway i can get it to "forget" the number of trials the user enters at the end of each loop? Here is the code i have so far:
PHP Code:
```import java.io.*;
import java.util.Random;
class Week5Part4
{
static PrintWriter screen = new PrintWriter( System.out, true);
static Random value = new Random();
private static double p(double X, double Y)
{
return ((X*X)+(Y*Y));
}
public static void main (String [] args ) throws IOException
{
screen.println("The value of Pi stored in the Math class is " + Math.PI);
screen.println("\n\n");
double sum = 0;
double overflow = 0;
int trials;
double nextX;
double nextY;
do
{
screen.println(" Enter the number of trials needed");
for (int n =0; n<=trials-1; n++)
{
nextX = value.nextDouble();
nextY = value.nextDouble();
if (p(nextX,nextY)<1) sum++;
if (p(nextX,nextY)>=1) overflow++;
}
screen.println("The value of Pi is " + ((4*sum)/trials) + " calculated by the program");
screen.println("sum " + sum + " Overflow " + overflow + " Total " + (sum+overflow));
trials=0;
}
while(trials != 1 );
}
}```
Thanks for any help in advance!

PS sorry if this is on the wrong section!
Last edited by Simon4360; 03-04-2013 at 12:24 PM.  Reply With Quote

2. Member Join Date
Feb 2013
Location
Posts
25
Rep Power
0

## Re: Calculating Pi

Java Code:
`for (int n =0; n<=trials-1; n++)`

Secondly i think do terminate your while loop
Ask user to press 1 to continue or 2 to terminate
On 1 program should simply work
On 2 program should terminate

Coz you are always doing
Java Code:
```trials=0;
}While(trials!=1);```
It will cause program to run infinitely.

Thanks  Reply With Quote

3. Moderator   Join Date
Apr 2009
Posts
13,541
Rep Power
26

## Re: Calculating Pi

Print out the value of 'trials' just before the for loop.
I don't spot where it could be adding previous trials values.

Ah, it's not trials that's the problem...you don't reset any of your other variables (sum, overflow, nextX, nextY).
The easiest way to avoid this is to declare your variables in the narrowest scope possible, in this case those 4 should be declared inside the while loop.  Reply With Quote

4. Member Join Date
Mar 2013
Posts
2
Rep Power
0

## Re: Calculating Pi

Ahhh Tolls, thank you so much! program works perfectly now. Such a simple solution :)  Reply With Quote

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•