2017-10-18 16 views
2

これで、JavaでGUIを作成するための基本を開始しました。私は、入力がオプションペインで指示される2次方程式を解く基本的な数学プログラムを作成することから始めました。しかし、想像上の解決策がないときはいつでも、プログラムが私に私に解決策を与えていることに気づいた。入力用に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); 
} 

}

私は虚数で解決策を与える3つの数字を実行すると、プログラムが正常に動作します:ここで コードです。しかし、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法から)次の行にある

+1

私は信じることができない@BrenoQ私は完全にそれを見落とした。ありがとうございました。うまくいけば、私はこのエラーをもう一度しないでください。 – CurlyCue

答えて

2

:。

double num3 = Double.parseDouble (b); 

それは次のようになります。

double num3 = Double.parseDouble (c); 
+0

高速ans私よりも、私は完全に同意:) – Sorontur

関連する問題