import java.io.*; //wird für das Einlesen von Zahlen benötigt
public class Wurzel {
private double in;
private double out;
private boolean istzahl;
private double heron(double d) { //berechnet die Wurzel nach dem Verfahren von Heron
double fehler = 0.0004; //gibt die genauigkeit an, hier drei Stellen nach dem Komma
double a;
double b;
a=1;
b=d;
while ((b-a)>fehler) {
b=(a+b)/2;
a=d/b;
}
return b;
} //ende heron
private double einlesen() { //Methode zum einlesen von Zahlen von der Konsole
Double d = new Double(0);
System.out.print("Bitte die Zahl von der die Wurzel gezogen werden soll eingeben: ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
d = Double.valueOf(br.readLine());
istzahl = true;
}
catch(Exception e) {
System.out.println("Fehler beim einlesen, bitte nur Zahlen eingeben.");
istzahl = false;
}
return d.doubleValue();
} //Ende einlesen
public void rechne() {
in = einlesen();
if ((in >= 0) && (istzahl)) { //wenn die eingelesene Zahl >= 0 ist und es wirklich eine Zahl ist dann wird die Wurzel gezogen
out = Math.sqrt(in);
System.out.println("Die Wurzel aus "+in+" ist "+out+".");
System.out.println("Die Wurzel aus "+in+" nach dem Verfahren von Heron: "+heron(in));
}
else { //sonst Fehlermeldung ausgeben und nochmal
System.out.println("Die Zahl muss grösser gleich 0 sein!");
rechne();
}
}
public static void main(String[] args) {
Wurzel wurzel1 = new Wurzel();
wurzel1.rechne();
}
}