/**
 *
 * Programmieraufgabe P-10 (WurzelRechnerTest.java)
 *
 * @author Leonhard Fellermayr
 * @version 1.0
 */

/** Benoetigte Packages. Hier nur zum gepufferten Einlesen von der
  * Konsole.
  */

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

/** Implementierung der Klasse WurzelRechnerTest, Testklasse fuer
  * WurzelRechner
  */

public class WurzelRechnerTest {

	/**
	  * wertEinlesen () : Lies einen Wert vom Typ double von der Konsole
	  * ein und gib diesen zurueck.
	  *
	  * @return Von der Konsole eingelesener double-Wert
	  *
	  */

	public static double wertEinlesen () throws IOException {

		/** Neue Instanz von BufferedReader erzeugen */

		BufferedReader console = new BufferedReader (
			new InputStreamReader (System.in));

		/** Geparsten double-Wert zurueckgeben */

		return (Double.parseDouble (console.readLine ()));

	}

	/**
	  * main-Methode der Klasse WurzelRechnerTest. Liest nach Eingabe-
	  * aufforderung einen Wert von der Konsole und fuehrt mit Hilfe
	  * der Klasse WurzelRechner so lange Approximation an die
	  * Quadratwurzel durch, bis die Fliesskommagenauigkeit nicht mehr
	  * ausreichend ist.
	  *
	  * @param args Dieses Programm akzeptiert keine Kommandozeilenparameter.
	  * @return void
	  *
	  */

	public static void main (String[] args) throws IOException {

		/** Eingabeaufforderung */
		System.out.print ("Bitte geben Sie einen Wert ein: ");

		/** Wert mit Hilfe von wertEinlesen () einlesen */
		double wert = wertEinlesen ();

		/** Neue Instanz von WurzelRechner */
		WurzelRechner myWR = new WurzelRechner (wert);

		/** Abbruchskriterium: weitere Naeherungen ergeben nichts Neues */

		while (myWR.nochUngenau ())

			/** Ausgabe des aktuellen Naeherungswertes auf der Konsole */

			System.out.println ("Aktuelle Naeherung: " + myWR.naechsteNaeherung ());

	} // main ()

} // Klasse WurzelRechnerTest ()
