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 den Bildschirm ausgegeben
und das Programm wird beendet.
Hier ist das überarbeitete Programm, mit ein paar Lücken:
import java.io.*; class Quadratwurzel { public static void main( String[] args ) throws IOException { 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 String nChars; BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in) ); System.out.println("Geben Sie eine Zahl ein:"); nChars = stdin.readLine(); n = Double.parseDouble( nChars ); _____________________________________ { 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 ) ; } ________ _____________________________ } }