import java.io.PrintStream; import java.util.Scanner; import type.lib.Fraction; public class ApproxPi { public static void main(String[] args) { PrintStream output = System.out; Scanner input = new Scanner(System.in); final int MAX_TERMS = 20; output.print("How many terms do you want to sum? "); int numTerms; for (numTerms = input.nextInt(); numTerms < 0 || numTerms > MAX_TERMS; numTerms = input.nextInt()) { output.print("Number of terms must be from 0-20... try again: "); } Fraction sum = new Fraction(); for (int i = 1; i <= numTerms; i++) { int denom = i * 2 - 1; if (i % 2 == 0) { denom = -denom; } Fraction f = new Fraction(1, denom); sum.add(f); } sum.multiply(new Fraction(4, 1)); double pi = (double) sum.getNumerator() / sum.getDenominator(); output.println("The approximate value of pi is"); output.print(sum); output.print(" = "); output.println(pi); output.println("The value of Math.PI is "); output.println(Math.PI); } }