Hy,
bin noch neu auf dem Gebiet der JAVA Programmierung, genauer gesagt hab ich im Februar damit angefangen.
Folgende Aufgabenstellung:
Soweit sogut, die Methode steht an und für sich, nur mit der Ausgabe hab ich dann so meine Probleme.
Hier mal mein Code:
Die Methode MyMath.squareroot ist eine selbstgebastelte Funktion die die Wurzel berechnet, da keine Standardfunktionen verwendet werden dürfen
Das Problem das ich nun habe:
so wie der Code dasteht, funktioniert es ohne Probleme, unter der Wurzel kommt 76 heraus, dh ich bekomme 2 Lösungen.
Wenn ich nun die Zahlen verändere, zB
würde unter der Wurzel 0 herauskommen und es soll nur ein Ergebnis geliefert werden. Dadurch dass ich aber in main
stehen habe, will Java mir natürlich ein 2tes Array liefern, was es aber nicht gibt, daher bekomme ich folgende Meldung:
Hat jemand einen Verbesserungsvorschlag für mich, stehe nun ziemlich auf der Leitung.
bin noch neu auf dem Gebiet der JAVA Programmierung, genauer gesagt hab ich im Februar damit angefangen.
Folgende Aufgabenstellung:
Schreiben Sie eine Methode "root", die die Lösungen x0,1 einer quadratischen Gleichung ax2 bx + c = 0 als double-array ausgibt.
Wenn beide Lösungen reell sind, dann soll das Ergebnisarray 2 Elemente haben, fallen beide Lösungen zusammen, dann soll das Ergebnisarray nur 1 Element haben, sid die Lösungen komplex, dann ein leeres Ergebnisarray zurück gegeben werden
Soweit sogut, die Methode steht an und für sich, nur mit der Ausgabe hab ich dann so meine Probleme.
Hier mal mein Code:
Java:
public class Main {
public static void main(String[] args) {
double[] x = MyMath.root(2, 10, 3);
System.out.println(x[0]);
System.out.println(x[1]);
}
}
class MyMath {
public static double[] root (int a, int b, int c) {
// Loesungsmenge kann anhand der Diskriminante ( x = b*b - 4*a*c) abgelesen werden
// [url=http://de.wikipedia.org/wiki/Quadratische_Gleichung#Diskriminante]Quadratische Gleichung ? Wikipedia[/url]
double x = b*b - 4*a*c;
// wenn x < 0 -> keine reelle Loesung
if (x < 0) {
double[] z = new double[2];
return z;
// wenn x = 0 -> x1 & x2 liefern das selbe Ergebnis
} else if (x == 0) {
double[] z = new double[1];
z[0] = (-1 * b) / (2 * a);
return z;
// wenn x > 0 -> 2 Loesungen
} else {
double[] z = new double[2];
z[0] = (- b + MyMath.squareroot(x)) / (2 * a);
z[1] = (- b - MyMath.squareroot(x)) / (2 * a);
return z;
}
}
}
Die Methode MyMath.squareroot ist eine selbstgebastelte Funktion die die Wurzel berechnet, da keine Standardfunktionen verwendet werden dürfen
Das Problem das ich nun habe:
so wie der Code dasteht, funktioniert es ohne Probleme, unter der Wurzel kommt 76 heraus, dh ich bekomme 2 Lösungen.
Wenn ich nun die Zahlen verändere, zB
Java:
double[] x = MyMath.root(5, 10, 5);
würde unter der Wurzel 0 herauskommen und es soll nur ein Ergebnis geliefert werden. Dadurch dass ich aber in main
Java:
System.out.println(x[0]);
System.out.println(x[1]);
stehen habe, will Java mir natürlich ein 2tes Array liefern, was es aber nicht gibt, daher bekomme ich folgende Meldung:
Code:
-1.0
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at root.Main.main(Main.java:17)
Hat jemand einen Verbesserungsvorschlag für mich, stehe nun ziemlich auf der Leitung.