Da negative Zahlen keine Quadratwurzel haben, wäre die Schleife nicht in der Lage sie zu berechnen und sie würde endlos laufen.
Es gibt mehrere Möglichkeiten mit fehlerhaften Input umzugehen. Eine Möglichkeit ist es n
zu überprüfen.
Wenn n
OK ist, wird die Schleife ausgeführt,
ansonsten wird eine Fehlermeldung auf dem Bildschirm ausgegeben
und das Programm wird beendet.
Hier ist das überarbeitete Programm, mit ein paar Lücken:
import java.util.Scanner; class Quadratwurzel { public static void main( String[] args ) { final double FASTNULL = 1.0E-14 ; double n ; // der Anwender gibt n ein double schaetzung = 1.0 ; // die gleiche Schätzung funktioniert für jedes n // die Zahl vom Anwender holen Scanner scan = new Scanner( System.in ); System.out.print("Geben Sie eine Zahl ein: "); n = scan.nextDouble(); { while ( Math.abs( n/(schaetzung*schaetzung) - 1.0 ) > FASTNULL ) { // einen neuen Wert für schaetzung berechnen schaetzung = n/(2*schaetzung) + schaetzung/2 ; } System.out.println("Die Quadratwurzel von " + n + " ist " + schaetzung ) ; } } }
Wir füllen die Lücken aus, so dass das Programm die Eingabe des Anwenders überprüft, ob die Zahl positiv ist und eine Fehlermeldung ausgibt, wenn die Zahl negativ ist.