Quadratische Gleichung

mimix

Aktives Mitglied
Hallo

Ich habe das folgende Programm geschrieben:

Main Methode
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class QGBerechnen {
	/**
	 * @param args
	 * @throws IOException
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		System.out.println("Quadratische Gleichung");
		System.out.println("***********************");
		System.out
				.println("Formel für die Quadratische Gleichung ist: ax^2+bx+c=0");
		InputStreamReader inStream = new InputStreamReader(System.in);
		BufferedReader in = new BufferedReader(inStream);
		System.out.println("Geben Sie a ein:");
		String s = in.readLine();// Tastatureingabe
		double a = Double.parseDouble(s);

		System.out.println("Geben Sie b ein:");
		String t = in.readLine();// Tastaureingabe
		double b = Double.parseDouble(t);

		CQuadratischeGleichung rechnung = new CQuadratischeGleichung();// neues
		// Objekt
		// der
		// Klasse
		// CQuadratischGleichung
		// erstellen
		System.out.println("Geben Sie c ein:");
		String u = in.readLine();// Tastatureingabe
		double c = Double.parseDouble(u);

		rechnung.setQuadratischeGleichung(a, b, c);// Dem Objekt die Set-Methode
		// zuweisen, welche die
		// Variablen a, b und c
		// erhält.
		double plus = (double) rechnung.getQuadratischeGleichungPlus();// Neue
		// Variable
		// plus
		// vom
		// Typ
		// double
		// wird
		// erstellen,
		// welche
		// ihr
		// die
		// get-Methode
		// zugewiesen
		// wird.
		if (plus < 0) {// wenn die Variable plus kleiner als 0 ist dann
			System.out.println("Fehler! Resultat ist kleiner als 0, es ist: "
					+ plus);
		} else {// Sonst
			System.out.println("Ihre + Lösung:" + plus);
		}

		double minus = (double) rechnung.getQuadratischeGleichungMinus();
		if (minus < 0) {// Wenn Die Variable minus kleiner als 0 ist
			System.out.println("Fehler! Resultat ist kleiner als 0, es ist: "
					+ minus);
		} else {// Sonst
			System.out.println("Ihre - Lösung: " + minus);
		}
	}
}


Klasse

Java:
public class CQuadratischeGleichung {
	private double m_a;// Membervariablen
	private double m_b;
	private double m_c;

	public CQuadratischeGleichung() {// Konstruktor
	}

	public CQuadratischeGleichung(double a, double b, double c) {// Konstruktor
		m_a = a;
		m_b = b;
		m_c = c;
	}

	public void setQuadratischeGleichung(double a, double b, double c) {// Set-Methode
		m_a = a;
		m_b = b;
		m_c = c;
	}

	public double getQuadratischeGleichungPlus() {
		double b = m_b / 2;// p/2
		double m_z = b / m_a;// p/x^2
		double m_y = m_c / m_a;// q/x^2

		return (-m_z + Math.sqrt(m_z * m_z - m_y));// Formel, um die
		// Quadratische Gleichung zu
		// berechnen
	}

	public double getQuadratischeGleichungMinus() {// Get-Methode
		double b = m_b / 2;// p/2
		double m_z = b / m_a;// p/x^2
		double m_y = m_c / m_a;// q/x^2
		return (-m_z - Math.sqrt(m_z * m_z - m_y));// Formel, für die berechnung
		// der Quadratischen
		// Gleichung
	}
}

Ich bekomme aber immerwieder den Wert "NaN" zurück. Was muss ich tun?:bahnhof:
 
S

SlaterB

Gast
schonmal überlegt wie viel besser Menschen Fragen beantworten können, wenn du wichtige Informationen wie die eingegebenen Werte a, b, c auch mitteilst?

andereseits könntest du dann auch selber die Rechnung genauer verfolgen

wenn immer irgendwo Code wie
Java:
double b = m_b / 2;// p/2
double m_z = b / m_a;// p/x^2
double m_y = m_c / m_a;// q/x^2
steht, dann mache daraus:
Java:
double b = m_b / 2;// p/2
System.out.println("b ausgerechnet = .. ");
double m_z = b / m_a;// p/x^2
System.out.println("m_z ausgerechnet = .. ");
double m_y = m_c / m_a;// q/x^2
System.out.println("m_y ausgerechnet = .. ");
und da wo erstmals ein komischer Wert rauskommt schaue dir die Werte der Rechnung genauer an usw.

wenn man allgemein sehr viele solcher Schritte hat hilft Intervallhalbierung:
erst bei ca. 50% des Rechnungstands nachschauen ob schon was komisches dabei ist, wenn ja dann bei 25%, ansonsten bei 75% usw.
 
G

Gast2

Gast
Das hier ist ein gutes Beispiel für "Ich mag nicht selber debuggen".

Da du keinen Laufzeitfehler oder Compilerfehler hast sondern "nur" dein Programm falsch arbeitet, solltest du erst mal selber debuggen. Und falls du das nicht kannst, lern es.

Der Tipp von Slater ist im übrigen der richtige Anfang.

Falls du ohne IDE arbeitest, solltest du dringend eine einfache IDE installieren, welche einen intuitiven Debugger bietet (Ich würde zu NetBeans tendieren, aber das ist Geschmackssache).
 

Ebenius

Top Contributor
[java=22] public double getQuadratischeGleichungPlus() {
double b = m_b / 2;// p/2
double m_z = b / m_a;// p/x^2
double m_y = m_c / m_a;// q/x^2

return (-m_z + Math.sqrt(m_z * m_z - m_y));// Formel, um die
// Quadratische Gleichung zu
// berechnen
}
[/code]
[c]m_z[/c] stimmt irgendwie nicht mit seinem Kommentar überein…

Ich bekomme aber immerwieder den Wert "NaN" zurück.
Immer? Zum Beispiel nicht bei 10, 10, -5. NaN bekommst Du, wenn die Rechnung kein Ergebnis hat. Zum Beispiel bei einer Quadratwurzel aus einer negativen Zahl (gibt's ja bekanntlich bei reellen Zahlen nicht).

Nachtrag: Mann war ich langsam…

Ebenius
 
Zuletzt bearbeitet:

Ebenius

Top Contributor
Nachtrag 2: Die Benennung Deiner Variablen ist auch etwas seltsam. Wenn man Variablen mit [c]m_[/c] anfangen lässt, dann tut man das in der Regel, um Members von lokalen Variablen abzugrenzen. [c]m_z[/c] und [c]m_y[/c] würde ich daher als falsch bezeichnet betrachten.

Außerdem solltest Du Deine Kommentare mal zusammen stauchen (also die unsinnigen Zeilenumbrüche raus). Das erhöht die Lesbarkeit Deiner Programme und damit auch die Wahrscheinlichkeit, dass Du oder andere Fehler schnell finden.

Ebenius
 

mimix

Aktives Mitglied
:D Programm hat die ganze Zeit funktioniert.. nur die Werte die ich eingegeben habe waren falsch somit konnte er mir auch kein Resultat liefen :lol::lol:

Vielen Dank :toll::toll:
 
G

Gast2

Gast
Das hier ist ein gutes Beispiel für "Ich mag nicht selber debuggen".

Da du keinen Laufzeitfehler oder Compilerfehler hast sondern "nur" dein Programm falsch arbeitet, solltest du erst mal selber debuggen. Und falls du das nicht kannst, lern es.

Der Tipp von Slater ist im übrigen der richtige Anfang.

Falls du ohne IDE arbeitest, solltest du dringend eine einfache IDE installieren, welche einen intuitiven Debugger bietet (Ich würde zu NetBeans tendieren, aber das ist Geschmackssache).

Ich hab ja gesagt... debuggen lernen. Noch vor den genannten Vorschlägen steht natürlich:

PRÜFE DIE EINGABE ...

:autsch:

PS: Dann markier das Thema wenigstens als gelöst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R quadratische Gleichung Java Basics - Anfänger-Themen 23
B Quadratische Gleichung mit JAVA lösen Java Basics - Anfänger-Themen 5
S Quadratische Gleichung Java Basics - Anfänger-Themen 5
V Quadratische Gleichung Java Basics - Anfänger-Themen 20
O Quadratische Gleichung Problem?! Java Basics - Anfänger-Themen 7
G Frage wegen Quadratische Gleichung Java Basics - Anfänger-Themen 9
G quadratische Gleichung lösen Java Basics - Anfänger-Themen 2
N Quadratische Matrix inkl Summe Java Basics - Anfänger-Themen 8
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
K Quadratische Matrix um 90° drehen Java Basics - Anfänger-Themen 5
F Quadratische Gleichungen Java Basics - Anfänger-Themen 6
Screen Kurvendiskussion Quadratische Gleichungen Java Basics - Anfänger-Themen 15
K Datentypen Quadratische Spirale Java Basics - Anfänger-Themen 6
J HILFE! Quadratische funktion programmieren Java Basics - Anfänger-Themen 3
S Quadratische Funktion mit Java primitiv zeichnen. Java Basics - Anfänger-Themen 6
H Quadratische Matrix Java Basics - Anfänger-Themen 8
C Gleichung String Split Java Basics - Anfänger-Themen 6
S Eingabe in einer Gleichung. Java Basics - Anfänger-Themen 14
S Lineare Gleichung lösen Java Basics - Anfänger-Themen 1
C Gleichung mit Potenz mit einer Unbekannten lösen Java Basics - Anfänger-Themen 5
B lineare Gleichung programmieren Java Basics - Anfänger-Themen 2
H Gleichung parsen Java Basics - Anfänger-Themen 10
calzone Problem einer Gleichung mit Modulo Java Basics - Anfänger-Themen 5
F Problem mit quadratischer Gleichung Java Basics - Anfänger-Themen 4
K Lösen einer Gleichung Java Basics - Anfänger-Themen 12
G Zahlen aus Gleichung Java Basics - Anfänger-Themen 4
B Gleichung auslesen und dann damit Rechnen? Java Basics - Anfänger-Themen 4
I gleichung lösen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben