# Lab 5 - Library Classes
* Date: 10-9-2017
* Course: SE1011-051
* Submitted to: Dr. Chris Taylor
>> | Earned | Possible | Criteria |
>> | ------ | -------- | ------------------------------------------------ |
>> | 85 | 85 | Met requirements / Technical quality |
>> | 10 | 10 | Coding standard compliance and program clarity |
>> | 5 | 5 | Following submission instructions |
>
> # Feedback
> * Nice work
# Lab5.java
```
/*
* Course: SE1011-051
* Term: Fall 2017-2018
* Assignment: Lab 5
* Author: Trevor Barnes
* Date: 10/3/17
*/
package barnestr;
import java.util.Scanner;
public class Lab5 {
public static void main(String[] args) {
boolean error = false;
Scanner in = new Scanner(System.in);
String again = "y";
while (again.equals("y") || again.equals("Y")) {
```
> #### Considering using the do/while
> Since you essentially need to ask the user for input at least once,
> you should consider using a `do`/`while` loop. That would allow you
> to avoid having to duplicate the user input code.
```
//Ask user for point amount
System.out.println("Enter the preferred number of randomly generated points:");
//Generate points
int pointAmt = in.nextInt();
in.nextLine();
while (pointAmt <= 0) {
System.out.println("Enter the preferred number of randomly generated points:");
pointAmt = in.nextInt();
}
in.nextLine();
```
> #### Should be inside the loop
> This `in.nextLine();` call should be inside the loop so that
> it only runs if there was a call to `in.nextInt()`. Having it
> here requires the user to hit enter one too many times.
```
int inside = 0;
double finalPoint = 0;
for (int i = 0; i < pointAmt; i++) {
double pointX = Math.random();
double pointY = Math.random();
```
> #### -2 Did not use `Random` class
> The lab assignment required that you write a program that:
>> * Generates the desired number of random points using the `Random` class.
>
> Your program does not make use of the `Random` class.
```
//Calculate the hypotenuse of the two points
double pointC = Math.sqrt(Math.pow(pointX, 2) + Math.pow(pointY, 2));
//Determine whether the point is inside or outside of the circle (pointC <= pi/4)
if (pointC <= 1) {
inside++;
//Convert proportion to pi
}
finalPoint = (double) inside / (double) pointAmt;
}
System.out.println((finalPoint * 4));
```
> #### -4 Does not display correct number of digits
> The lab assignment required that for each estimate the program:
>> * Displays the estimated value and the __number of correct digits__.
```
do {
System.out.println("Would you like to generate a new estimate for pi?");
again = in.nextLine();
} while (!again.equals("y") && !again.equals("Y") && !again.equals("n") && !again.equals("N"));
}
```
> #### -4 Does not display best estimate
> The lab assignment required that for each estimate the program:
>> * If the user enters `n` or `N`, the program should __display the best estimate of pi__ generated while the program ran and then exit.
```
}
}
```
> #### -10 Late penalty
> Your submission was 1 day late.