Quadratische Gleichungen

freshes

Mitglied
Hallo, ich hab hier eine Aufgabe, mit der ich nicht zurecht komme. Es sollen per Tastatureingabe rationale Zahlen für p und q der quadratischen Gleichung x² + p*x + q = 0 eingegeben werden.

Dazu soll im Programm die Diskriminante berechnet werden: D = p² - 4*q

Dann gibt es Fallunterscheidungen für D = 0, D>0 und D<0. Die entsprechenden Funktionen x1 und x2 für jeden Fall hab ich ins Programm geschrieben. Ich weiß jetzt aber nicht wie ich weiter vorgehen soll, soll ich die if-Anweisung verwenden? oder mit case operieren? Im Code ist für euch wohl unschwer zu erkennen, dass das nicht funktioniert, bekomm das Programm einfach nicht zum Laufen. Für Hilfestellungen wäre ich sehr dankbar.



Code:
class A8
{ public static void main(String[] args)
 {int p, q, D, x1, x2, j;
 System.out.println("Quadratische Gleichungen");

  /* Tastatureingabe von p       */
  System.out.println("Bitte rationale Zahl p eingeben");
  p=IO1.einint();

  /* Tastatureingabe von q       */
  System.out.println("Bitte rationale Zahl q eingeben");
  q=IO1.einint();

  
  do
  {D=p*p - 4*q;
   System.out.println(p+" hoch "+2+" - "+4+" * "+q+" = "+D);
   }
   if (D > 0)
   { x1 = -p/2 + (Math.sqrt(D))/2;
     x2 = -p/2 - (Math.sqrt(D))/2;
   }
    if (D = 0)
   { x1 = -p/2;
     x2 = -p/2;
   
   }
   
   if (D < 0)
   { x1 = -p/2 + j * (Math.sqrt(-D))/2;
     x2 = -p/2 - j * (Math.sqrt(-D))/2;
} 
    System.out.println("Ende der Berechnung");
 }
}
 

XHelp

Top Contributor
Ich denke mal, du soltlest mal bei den reellen Zahlen bleiben, wenn die Diskriminante kleiner als Null ist, dann ist die gleichung nicht Lösbar.
Und es hilft ungemein auf sinnvolle Codeeinrückung zu achten... und Variablennamen klein schreiben

Zu dem Programm:
- Was soll das
Code:
do
bewirken?
- Vergliechen wird mit
Code:
==
, das was du machst ist ein Wert zuweisen.
- Du solltest nicht mit ganzen Zahlen arbeiten, sondern mit z.B. double
- Es gibt mind. 2 Fehler, die der Compiler ausspucken sollte. Es könnte durch aus sinnvoll sein, diese Fehler auch bei der Frage anzugeben...
 

Landei

Top Contributor
- Vergliechen wird mit
Code:
==
, das was du machst ist ein Wert zuweisen.

Wobei man bei reelen Zahlen nicht direkt vergleichen sollte, sondern ein kleines Intervall angeben sollte, etwa [c]if(Math.abs(D) < 0.0000001) {...[/c]

Komplexe Zahlen sind bei Java nicht eingebaut, du musst sie entweder selbst schreiben oder eine geeignete Implementierung irgendwo borgen (z.B. Complex.java ).
 
Zuletzt bearbeitet:

freshes

Mitglied
Hallo und danke für die Anmerkungen. Ich hab's jetzt soweit hinbekommen, dass das Programm für die ersten beiden Fälle läuft (also d>0 und d==0). Dass die Determinante negativ ist, macht nichts, weil das nur für den Fall d<0 gilt und sich dadurch wieder ein positiver Wert ergibt.

Code:
class A8
{public static void main(String[] args)
 {double p, q, d, x1, x2, j;
  System.out.println("Quadratische Gleichungen");

  /* Tastatureingabe von p       */
  System.out.println("Bitte rationale Zahl p eingeben");
  p=IO1.einint();

  /* Tastatureingabe von q       */
  System.out.println("Bitte rationale Zahl q eingeben");
  q=IO1.einint();

  
  {d=p*p - 4*q;
   {System.out.println(p+" hoch "+2+" - "+4+" * "+q+" = "+d);
   }
   if (d > 0)
   {x1 = -p/2 + (Math.sqrt(d))/2;
    x2 = -p/2 - (Math.sqrt(d))/2;
    System.out.println("x1= " + x1);
    System.out.println("x2= " + x2);
   }
    if (d == 0)
   { x1 = -p/2;
     x2 = -p/2;
     System.out.println("x1= " + x1);
     System.out.println("x2= " + x2);
   }
   if (d < 0)
   { x1 = -p/2 + j * (Math.sqrt(-d))/2;
     x2 = -p/2 - j * (Math.sqrt(-d))/2;
     System.out.println("x1= " + x1);
     System.out.println("x2= " + x2);
   }
    System.out.println("Ende der Berechnung");
  }
 }
}

Problem ist noch die Zuweisung von j. Ich will dass dann am Ende für den letzten Fall die Variable stehen bleibt, in dieserer Form etwa: x1 = -4 - j * 5; Analog für x2.

Error: A8.java:39:18: variable j might not have been initialized
 
Zuletzt bearbeitet:

Landei

Top Contributor
So geht das nicht. Die Variablen x1 und x2 erwarten einen double-Wert, und was du da zuweisen willst ist eben keiner und Java kennt auch keine imaginäre Einheit j (gebräuchlicher ist i). Entweder du verwendest komplexe Zahlen, oder du änderst die Ausgabe:

Java:
if (d < 0) { 
     System.out.println("x1= " + (-p/2) + " + " + ((Math.sqrt(-d))/2) + "j");
     System.out.println("x2= " + (-p/2) + " - " + ((Math.sqrt(-d))/2) + "j");
}
 
Zuletzt bearbeitet:

freshes

Mitglied
ich hab's jetzt so gemacht, dass ich für (-p/2) a und für ((Math.sqrt(-d)) b eingesetzt habe. Ist da ok so? das Programm läuft jedenfalls.

Code:
class A8
{public static void main(String[] args)
 {double p, q, d, x1, x2, j, a, b;

  System.out.println("Quadratische Gleichungen");

  /* Tastatureingabe von p       */
  System.out.println("Bitte rationale Zahl p eingeben");
  p=IO1.eindouble();

  /* Tastatureingabe von q       */
  System.out.println("Bitte rationale Zahl q eingeben");
  q=IO1.eindouble();

  
  {d=p*p - 4*q;
   {System.out.println(p+" hoch "+2+" - "+4+" * "+q+" = "+d);
   }
   if (d > 0)
   {x1 = -p/2 + (Math.sqrt(d))/2;
    x2 = -p/2 - (Math.sqrt(d))/2;
    System.out.println("x1= " + x1);
    System.out.println("x2= " + x2);
   }
    if (d == 0)
   { x1 = -p/2;
     x2 = -p/2;
     System.out.println("x1= " + x1);
     System.out.println("x2= " + x2);
   }
   if (d < 0)
   {a=-p/2;
    b=(Math.sqrt(d))/2;
    System.out.println("x1= " + a + " + " + b + "j");
    System.out.println("x2= " + a + " - " + b + "j");
   }
    System.out.println("Ende der Berechnung");
  }
 }
}
 

Landei

Top Contributor
Das ist OK. Nur für den Fall, dass d gleich null ist, würde ich (wie oben beschrieben) gegen einen kleinen Bereich testen, da Fließkommazahlen numerischen Ungenauigkeiten unterliegen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Screen Kurvendiskussion Quadratische Gleichungen Java Basics - Anfänger-Themen 15
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
R quadratische Gleichung Java Basics - Anfänger-Themen 23
K Quadratische Matrix um 90° drehen Java Basics - Anfänger-Themen 5
M Quadratische Gleichung Java Basics - Anfänger-Themen 6
B Quadratische Gleichung mit JAVA lösen Java Basics - Anfänger-Themen 5
K Datentypen Quadratische Spirale Java Basics - Anfänger-Themen 6
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
J HILFE! Quadratische funktion programmieren Java Basics - Anfänger-Themen 3
G Frage wegen Quadratische Gleichung Java Basics - Anfänger-Themen 9
S Quadratische Funktion mit Java primitiv zeichnen. Java Basics - Anfänger-Themen 6
H Quadratische Matrix Java Basics - Anfänger-Themen 8
G quadratische Gleichung lösen Java Basics - Anfänger-Themen 2
O Erste Schritte Loesen von quadratischen Gleichungen Java Basics - Anfänger-Themen 3
H Wie kann ich in Java unbekannte Variablen in Gleichungen darstellen? Java Basics - Anfänger-Themen 3
J Lösen linearer Gleichungen Java Basics - Anfänger-Themen 3
M Gleichungen dynamisch erstellen und ausrechnen? Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben