因此,我已经开始使用Java创建GUI的基础知识。我已经开始创建一个基本的数学程序,该程序将解决输入通过选项窗格输入的二次方程。但是,我注意到,只要没有想象的解决方案,该计划就会给我提供解决方案。 下面是代码:使用javax.swing.JOptionPane输入时的计算错误
package window.math;
import javax.swing.JOptionPane;
public class WindowMath {
public static void Solve(double a, double b, double c){ //Gives the input of A, B, C to the formula
double x;
x = Math.pow(b,2) - 4 * a * c; //Determines whether solution will have imaginary numbers or not
if (x >= 0){ //Real Solution output
double y;
double z;
double j;
double k;
double l;
y = -b + Math.sqrt(x);
z = -b - Math.sqrt(x);
j= 2 * a;
k = y/j;
l = z/j;
JOptionPane.showMessageDialog(null, "The solutions are x = " + k + " and x = " + l + ".", "Quadratic Solver", JOptionPane.PLAIN_MESSAGE);
} else { //Imaginary Solution Output
double j;
double v;
double w;
double y;
double z;
y = Math.abs(x);
w = Math.sqrt(y);
j = 2 * a;
v = w/j;
z = -b/j;
JOptionPane.showMessageDialog(null, "The solutions are x = " + z + " + " + v + "i and x = " + z + " - " + v + "i.", "Quadratic Solver", JOptionPane.PLAIN_MESSAGE);
}
}
public static void main(String[] args) {
String a = JOptionPane.showInputDialog("Enter a:");
String b = JOptionPane.showInputDialog("Enter b:");
String c = JOptionPane.showInputDialog("Enter c:");
double num1 = Double.parseDouble(a);
double num2 = Double.parseDouble(b);
double num3 = Double.parseDouble(b);
Solve(num1,num2,num3);
}
}
当我运行三个数字,让同一个虚数的解决方案,那么该程序工作正常。然而,对于类似a = 1,b = 2和c = 1的情况,解应该是x = -1,x = -1。只有真正的解决方相反,输出结果给我“x = -1.0 + 1.0i,x = -1.0 - 1.0i。我目前使用NetBeans IDE 8.2(Build 201609300101)编码并使用Java更新1.8.0_144和JavaVM 25.144-b01。帮助将不胜感激
@BrenoQ我不能相信我完全忽略了这一点,非常感谢你,希望我不要再犯这个错误, – CurlyCue