C
Chal
Gast
Für die Schule sollen wir zwei Methoden schreiben, welche zum einen das arithmetische Mittel zweier Zahlen und zum anderen die Quadratwurzel einer Zahl berechnen sollen.
Das arithmetische Mittel war kein Problem und die Quadratwurzel sollte eigentlich auch ohne Probleme funktionieren, allerdings rechnet Java auf eine Art, die ich nicht nachvollziehen kann.
Nebeninfo: Ich benutze das normale JDK von Sun und BlueJ.
Mein Code zum Berechnen der Wurzel sieht wie folgt aus:
Die Rechnung innerhalb der for-Schleife ist ein Verfahren, mit dessen Hilfe man einen Näherungswert bekommt. Je öfter man die Rechnung durchführt, desto genauer ist das Ergebnis. Die Variable a ist hierbei die Zahl, aus der die Wurzel gezogen werden soll.
Den Namen des Verfahrens habe ich leider vergessen.
Auf jeden Fall gibt mir Java als Ergebnis "NaN", wenn ich die Methode laufen lasse. Ich habe es auch einmal mit der Abbruchbedingung i <= 0 versucht um zu sehen, was bei einem einzelnen Durchlauf passiert und da habe ich beim Beispiel a = 3 das Ergebnis 0.0 erhalten.
Normalerweise müsste ich allerdings von BlueJ eine Fehlermeldung erhalten, dass durch 0 geteilt würde, wenn ich mehr als einen Schleifendurchlauf einstelle, da x ja nach dem ersten Durchlauf schon 0 ist und somit beim zweiten durch 0 geteilt würde.
Diesen Fehler hatte ich nämlich vorher, da x ein integer und kein double war.
Wenn ich selbst auch nachrechne, was ich bei der Rechnung innerhalb der Schleife bei einem Durchgang erhalten würde, käme bei mir nicht 0.0, sondern sieben viertel als Ergebnis.
Habt ihr vielleicht eine Idee, was an meiner Methode/Klasse falsch ist?
Das arithmetische Mittel war kein Problem und die Quadratwurzel sollte eigentlich auch ohne Probleme funktionieren, allerdings rechnet Java auf eine Art, die ich nicht nachvollziehen kann.
Nebeninfo: Ich benutze das normale JDK von Sun und BlueJ.
Mein Code zum Berechnen der Wurzel sieht wie folgt aus:
Code:
public class Berechnungen
{
private double x;
public Berechnungen()
{
x = 2;
}
public double quadratwurzel(int a)
{
int i;
for( i = 0; i <= 1000; i++)
x = (1 / 2) * (x + a / x);
return x;
}
}
Den Namen des Verfahrens habe ich leider vergessen.
Auf jeden Fall gibt mir Java als Ergebnis "NaN", wenn ich die Methode laufen lasse. Ich habe es auch einmal mit der Abbruchbedingung i <= 0 versucht um zu sehen, was bei einem einzelnen Durchlauf passiert und da habe ich beim Beispiel a = 3 das Ergebnis 0.0 erhalten.
Normalerweise müsste ich allerdings von BlueJ eine Fehlermeldung erhalten, dass durch 0 geteilt würde, wenn ich mehr als einen Schleifendurchlauf einstelle, da x ja nach dem ersten Durchlauf schon 0 ist und somit beim zweiten durch 0 geteilt würde.
Diesen Fehler hatte ich nämlich vorher, da x ein integer und kein double war.
Wenn ich selbst auch nachrechne, was ich bei der Rechnung innerhalb der Schleife bei einem Durchgang erhalten würde, käme bei mir nicht 0.0, sondern sieben viertel als Ergebnis.
Habt ihr vielleicht eine Idee, was an meiner Methode/Klasse falsch ist?