java - 使用 javax.swing.JOptionPane 作为输入时出现计算错误

标签 java swing math

所以我开始学习用 Java 创建 GUI 的基础知识。我首先创建一个基本的数学程序,该程序将解决二次方程,其中输入通过选项 Pane 进行定向。然而,我注意到每当没有假想的解决方案时,程序就会用 i 给出解决方案。 这是代码:

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(内部版本 201609300101)中进行编码,并使用 Java 更新 1.8.0_144 和 JavaVM 25.144-b01。任何帮助将不胜感激。

最佳答案

代码中的问题位于以下行(来自 main 方法):

double num3 = Double.parseDouble (b);

应该是:

double num3 = Double.parseDouble (c);

关于java - 使用 javax.swing.JOptionPane 作为输入时出现计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46813531/

相关文章:

python - 如何使用 Python 将弧度转换为度数?

c++ - 根据一个点围绕中心点旋转了多少找到 2 个点

java - Android studio启动失败: Fatal error initializing 'null'

java - 使用 try catch 执行 while 循环

java - JScrollPane 和自动滚动 : Disturbing scrolling behavior

java - JFrame 未全屏显示所有图像

java - PKCS#1 V2.0 是为 Java 实现的吗?

java - 使用定时器实现长按

java - 服务器返回 HTTP 响应代码 : 403 for URL: Iam displaying webpage on JEditorPane

math - 如何计算具有相同感知亮度的 RGB 值