import java.io.*; //wird für das Einlesen von Zahlen benötigt
public class Wurzel { //hier fängt die Klasse Wurzel an
private double in; //fließkommazahl
private double out; //fleißkommazahl
private boolean istzahl; //kann die werte true und false haben
private double heron(double d) { //berechnet die Wurzel nach dem Verfahren von Heron warum hier was wie ist weiss ich auch nicht mehr, musst dir halt mal die Links weiter oben ansehen
double fehler = 0.0004; //gibt die genauigkeit an, hier drei Stellen nach dem Komma, wenn es z.B. 0.0000irgendwas wäre, wäre die Genauigkeit vier stellen nach dem Komma, das glaub ich jedenfalls *g*
double a;
double b;
a=1;
b=d;
while ((b-a)>fehler) {
b=(a+b)/2;
a=d/b;
}
return b; //gibt das ergebnis zurück, also die wurzel
} //ende heron
private double einlesen() { //Methode zum einlesen von Zahlen von der Konsole, hat mit wurzelziehen nix am hut
Double d = new Double(0);
System.out.print("Bitte die Zahl von der die Wurzel gezogen werden soll eingeben: "); //gibt eingabeaufforderung aus
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
d = Double.valueOf(br.readLine());
istzahl = true;
}
catch(Exception e) { //behandelt fehler die beim einlesen auftreten können, z.B. wenn man einen buchstaben anstatt eienr zahl einliest
System.out.println("Fehler beim einlesen, bitte nur Zahlen eingeben.");
istzahl = false;
}
return d.doubleValue(); //gibt die gelesene Zahl zurück
} //Ende einlesen
public void rechne() { //methode die die wurzel berechnen lässt, zum einenn durch die heron methode oben, zum anderen von java mit Math.sqrt
in = einlesen(); //ruft die methode einlesen auf und weist den von ihr zurückgegebenen wert der variablen in zu
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); //weist out den wert der von java berechnet wird zu
System.out.println("Die Wurzel aus "+in+" ist "+out+"."); //gibt out aus
System.out.println("Die Wurzel aus "+in+" nach dem Verfahren von Heron: "+heron(in)); //gibt das ergebnis das mit hilfe von heron berechnet wurde aus, der methodenaufruf ist hier integriert
}
else { //sonst Fehlermeldung ausgeben und nochmal
System.out.println("Die Zahl muss grösser gleich 0 sein!");
rechne();
}
} //ende der methode rechne
public static void main(String[] args) { //methode main, gehört zu jedem ausführbaren java programm
Wurzel wurzel1 = new Wurzel(); //erzeugt ein neues Objekt der Klasse Wurzel mit dem namen wurzel1
wurzel1.rechne(); //ruft die methode rechne des Objekts wurzel1 auf
} //ende von main
} //ende der Klasse Wurzel