quadratische Formel mit scanner-Eingänge
Okay also ich bin ein absoluter Java-noob, und ich bin versucht zu erstellen, ein Programm für die Klasse läuft, dass eine quadratische Gleichung mit scanner-Eingänge. So weit, was ich habe, ist diese:
import java.util.*;
public class QuadraticFormulaSCN {
public static void main(String[]args) {
System.out.println("insert value for a:");
Scanner scan1 = new Scanner(System.in);
double a = scan1.nextDouble();
System.out.println("insert value for b:");
Scanner scan2 = new Scanner(System.in);
double b = scan2.nextDouble();
System.out.println("insert value for C:");
Scanner scan3 = new Scanner(System.in);
double c = scan3.nextDouble();
double answer =((Math.sqrt(Math.pow(b,2)-(4*a*c))-b)/2);
double final2 =(-b + Math.sqrt(Math.pow(b,2)-(4*a*c)))/2;
System.out.println("The x values are:" + answer + final2);
}
}
Aber ich bekomme eine seltsame Ausgabe, speziell NaNaN
... Was muss ich tun um dies zu beheben? Was mache ich falsch?
- Sie sollte nur mit einer
Scanner
. - Auch, wird es Ihnen helfen, wenn Sie (zumindest für Testzwecke) vermeiden Sie eine Zeile code, und trennen Sie die Analysis in mehreren Variablen, für einfache debug-Druck. Trotzdem, sind Sie sicher, dass die Gleichung, die Sie gesetzt haben, hat mindestens eine Lösung (und, IMHO, sollten Sie versuchen, zu drucken, beide Lösungen, wenn Sie existieren).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin ein wenig spät zum Antworten, aber ich korrigierte Ihre Probleme (siehe die anderen Antworten), fixiert man Ihren Berechnungen, und reinigen Sie Ihren code.
NaN
ist etwas, das man bei der Berechnung ungültig ist. Wie Division durch 0 oder unter der Quadratwurzel von -1.Wenn ich testen Sie Ihren code mit
a = 1
,b = 0
undc = -4
den Antworten ist2.02.0
Die Formatierung ist nicht richtig, und die Berechnung der
final2
ist, nicht annulliert.Ansonsten ist der code richtig ist.
Verbessern Sie überprüfen könnten, ob die diskriminante negativ ist.
Oder, wenn Sie lieber die Unterstützung für Lösungen aus der komplexen Domäne:
Sind Sie immer
NaN
weil Sie versuchen, die Quadratwurzel einer negativen Zahl. In der Mathematik ist das nicht erlaubt, es sei denn, Sie erlauben, komplexe zahlen, z.B.1 +/- 2i
.Dies kann geschehen, in quadratische Formeln, wenn die diskriminante (das Ding in der Wurzel) negativ ist, z.B.
x^2 + 6*x + 100
:b^2 - 4ac
= 36 - 400 = -364. Die Quadratwurzel einer negativen Zahl in Java führt zuNaN
. (not a number)Testen für
NaN
verwendenDouble.isNaN
und Griff dieNaN
angemessen.Zusätzlich, Ihre Berechnungen sind falsch, auch wenn
NaN
nicht begegnet:Diese sollten ausgegeben 2.0 und 3.0
Sollten Sie nur tun, die Berechnung, wenn
diskriminante ist gleich oder größer als null
Eine Sache, die ich immer versuche zu tun ist, setzen alle meine Mathe in der entsprechenden Klammer zu vermeiden, allzu leicht, Reihenfolge der Operationen Fehler. Die NaN sagt "Keine Zahl." Würden Sie auch bekommen, dass die Nachricht, wenn der Benutzer die Eingabe der Ziffern, das könnte zu keinem Ergebnis führen, wie ein Versuch, die Quadratwurzel einer negativen Zahl. Auch, nur als Anmerkung, können Sie irgendwann nur noch auf Scanner für a,b, und c.