Eine gute Antwort wäre:

Um n zu bekommen (siehe unten), wird das Fragment vor der Schleife verwendet.

Potentielles Problem

In der Deklaration n mit 3.0 zu initialisieren stört nicht. Aber das könnte jemanden, der das Programm liest, verwirren. Daher ist es besser n nicht zu initialisieren.


import java.io.*;
class  Quadratwurzel
{
  public static void main( String[] args ) throws IOException 
  {
    final double FASTNULL = 1.0E-14 ;
    double n  ;               // der Anwender gibt einen Wert für 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 )
    {
       // eine neuen Wert für schaetzung berechnen
       schaetzung =  n/(2*schaetzung) + schaetzung/2 ;
    }

    System.out.println("Die Quadratwurzel von " + n + " ist " + schaetzung ) ;
  }

}

Das Programm ist soweit größtenteils korrekt. Aber es gibt ein potentielles Problem, das behoben werden sollte.

FRAGE 17:

Was würde passieren, wenn der Anwender eine negative Zahl eingibt?

Inhaltsverzeichnis