The fragment is used in front of the loop to get N, as seen below.
It does not hurt to initialize N to 3.00 in the declaration. But this might confuse a reader of the program, so it is best to not initialize N.
import java.util.Scanner; class SquareRoot { public static void main( String[] args ) { final double smallValue = 1.0E-14 ; double N ; // the user enters a value for N double guess = 1.00 ; // the same first guess works for any N // get the number from the user Scanner scan = new Scanner( System.in ); System.out.print("Enter the number: "); N = scan.nextDouble(); while ( Math.abs( N/(guess*guess) - 1.0 ) > smallValue ) { guess = N/(2*guess) + guess/2 ; // calculate a new guess } System.out.println("The square root of " + N + " is " + guess ) ; } }
The program as given is largely correct, but there is a big potential problem that should be fixed.
What would happen if the user entered a negative number?