Not a Number

Hallo!
also ich tüfftel mal wieder fleißig an was rum, hab folgendes geschrieben:
Java:
public class blubi {

	public static void main(String[] args) {
		eingabe();		

	}

	static int a;
	static int b;
	static int c;
	static double d;
	static String e;
	static double x1;
	static double x2;

	public static void eingabe(){

		a = GraphicIO.readInt("Bitte geben Sie a ein");
		b = GraphicIO.readInt("Bitte geben Sie b ein:");
		c = GraphicIO.readInt("Bitte geben Sie c ein:");
		d = Math.sqrt(Math.pow(b,2)-4*a*c);
		
		
		
		if (d != 0) {
			e = "Es gibt 2 Nullstellen: ";
	}
				else if (d == 0)  {
					e = "Es gibt nur eine Nullstelle, also eine Doppelnullstelle ";
				}
					else {
	
						GraphicIO.print("Keine Nullstellen vorhanden");
					}
					
				

	//public static void mitternachtsformel(){

		x1= (-b+ d)/ (2*a);
		x2= (-b-d)/ (2*a);


	//public static void ausgabe(){
		GraphicIO.print(e + "Das Ergenbiss ist: x1 =" + x1 + " x2=" + x2 );
	}
}

Die Graphic IO geschichte funktioniert (funkt. über nen import, der hier jetzt nicht mit drin steht). Es erscheint ein Fenster in das ich meine Zahlen eingebe. Das rechnet er auch fleißig und richtig und gibt mir zu der Nullstellenausgabe auch x1 und x2 korrekt aus.
Zu meinem Problem:

Es gibt bei der Rechnung 2 Möglichkeiten. 1. die Diskriminante (also das was unter der Wurzel steht) ist 0, ungleich 0 oder negativ. Wenn sie negativ ist, gibt es keine x1 und x2, wenn sie 0 ist, dann ist es eine doppelnullstelle, wenn d ungleich o ist, dann gibt es x1 und x2.
das funktioniert bei mir nich ???:L
könnt ihr mir helfen?
 

AmunRa

Gesperrter Benutzer
Es gibt nur 2 Möglichkeiten bei deiner if Bedingung

0 oder ungleich 0.

Da negativ ja auch ungleich null ist.

Deine If bedingung müsste lauten

0 , größer 0 oder kleiner 0

dann sollte das auch funktionieren
 

Blakh

Bekanntes Mitglied
Es würde die zukünftig Suche erleichtern, wenn du immer mit schreibst in welcher Zeile der Fehler passiert.

Java:
 d = Math.sqrt(Math.pow(b,2)-4*a*c);

Du machst hier Math.sqrt und das müsste eine Exception werfen bzw. d auf NaN etc. setzen, sobald das in der Klammer negativ ist.
 
Zuletzt bearbeitet:

Michael...

Top Contributor
[JAVA=27]
if (d != 0) {
e = "Es gibt 2 Nullstellen: ";
}
else if (d == 0) {
e = "Es gibt nur eine Nullstelle, also eine Doppelnullstelle ";
}
else {
GraphicIO.print("Keine Nullstellen vorhanden");
}[/code]
Abgesehen davon, dass d immer !=0 oder ==0 ist und somit der else Zweig nie erreicht wird, müsste in diesen noch ein return rein um die Methode zu beenden, o.ä. Da ansonsten immer versucht wird x1 und x2 zu berechnen.

--> if (d>0)...
 

Blakh

Bekanntes Mitglied
Java:
x1= (-b+ d)/ (2*a);

Wenn dein a auf 0 gesetzt wird, dann hast du hier auch ein Fehler.
 

Blakh

Bekanntes Mitglied
Es gibt nur 2 Möglichkeiten bei deiner if Bedingung

0 oder ungleich 0.

Da negativ ja auch ungleich null ist.

Deine If bedingung müsste lauten

0 , größer 0 oder kleiner 0

dann sollte das auch funktionieren

Wann liefert denn Math.sqrt ein negatives Ergebnis? Also meiner Meinung nach nie ;) . Es muss geprüeft werden, ob das innerhalb der Wurzel > = oder < als 0 ist.
 
habs rausgefunden!
so fukt.:

Java:
public class blubi {

	public static void main(String[] args) {
		eingabe();		

	}

	static int a;
	static int b;
	static int c;
	static double d;
	static String e;
	static double x1;
	static double x2;

	public static void eingabe(){

		a = GraphicIO.readInt("Bitte geben Sie a ein");
		b = GraphicIO.readInt("Bitte geben Sie b ein:");
		c = GraphicIO.readInt("Bitte geben Sie c ein:");
		d = Math.sqrt(Math.pow(b,2)-4*a*c);
		
		
		//public static void mitternachtsformel(){
		x1= (-b+ d)/ (2*a);
		x2= (-b-d)/ (2*a);
		
		if (Math.signum(d)== -1) {
			GraphicIO.print("Keine Nullstellen vorhanden");
		}
		else if (Math.signum(d) == 0)  {
			GraphicIO.print("Doppelnullstelle! " + "Das Ergenbiss ist: x1 =" + x1);
		}
		else if (Math.signum(d)!= +1){

			GraphicIO.print("Zwei Nullstellen vorhanden" + "Das Ergenbiss ist: x1 =" + x1 + " x2=" + x2 );
		}



		


		//public static void ausgabe(){
		//GraphicIO.print(e + "Das Ergenbiss ist: x1 =" + x1 + " x2=" + x2 );
	}
}

Danke:toll:
 

AmunRa

Gesperrter Benutzer
Wann liefert denn Math.sqrt ein negatives Ergebnis? Also meiner Meinung nach nie ;) . Es muss geprüeft werden, ob das innerhalb der Wurzel > = oder < als 0 ist.

HAtte mir den Code nicht genau angesehen sondern gedacht, dass d in seiner if Bedingung für die Diskriminante steht.

gibt es halt nur diese Drei Möglichkeiten 0 größer Null oder Double.NaN
 

Ähnliche Java Themen

Neue Themen


Oben