2013-06-02 72 views
1

求解一個二次方程創建一個java程序來求解二次方程

到目前爲止我寫下如下內容。我不知道如何你爲什麼不嘗試使用完全相同的算法,但隨後在返回語句中使用Math.min介紹第二種方法

public static void main(string args[]){ 

} 

public static double quadraticEquationRoot1(int a, int b, int c)(){ 

} 

if(Math.sqrt(Math.pow(b, 2) - 4*a*c) == 0) 
{ 
    return -b/(2*a); 
} else { 
    int root1, root2; 
    root1 = (-b + Math.sqrt(Math.pow(b, 2) - 4*a*c))/(2*a); 
    root2 = (-b - Math.sqrt(Math.pow(b, 2) - 4*a*c))/(2*a); 
    return Math.max(root1, root2); 
} 

} 
+0

爲何而歸根的最大?爲什麼不是一個包含兩個根的數組? – ncmathsadist

+0

http://www.hubberspot.com/2012/05/how-to-solve-simple-quadratic-equation.html – 2013-06-03 00:02:40

回答

5

首先,您的代碼不會編譯 - 在public static double quadraticEquationRoot1(int a, int b, int c)()開始之後您還有一個額外的}

其次,你不是在尋找正確的輸入類型。如果您想要輸入double,請確保您正確地聲明該方法。當他們可能是雙打時(例如,root1root2),還要小心聲明爲int

第三,我不知道爲什麼你有if/else塊 - 最好簡單地跳過它,只使用當前在else部分中的代碼。

最後,要解決您的原始問題:只需創建一個單獨的方法並使用Math.min()而不是Math.max()

所以,在代碼回顧:

public static void main(string args[]){ 

} 

//Note that the inputs are now declared as doubles. 
public static double quadraticEquationRoot1(double a, double b, double c)(){  
    double root1, root2; //This is now a double, too. 
    root1 = (-b + Math.sqrt(Math.pow(b, 2) - 4*a*c))/(2*a); 
    root2 = (-b - Math.sqrt(Math.pow(b, 2) - 4*a*c))/(2*a); 
    return Math.max(root1, root2); 
} 

public static double quadraticEquationRoot2(double a, double b, double c)(){  
    //Basically the same as the other method, but use Math.min() instead! 
} 
3

嘛?

此外,請注意,您沒有考慮到您的第一條if語句中$ b $是否爲負數。換句話說,您只需返回$ -b/2a $,但不檢查$ b $是否爲負數,如果不是,那麼這實際上是兩個根中較小的一個,而不是較大的。 對不起!我誤解了發生了什麼xD

+0

@Maesumi我的想法完全不當,我完全抱歉!第一種說法是否有幫助? – DanZimm

+0

是的,只使用Math.min是有意義的。我不確定OP在問什麼。 – 2013-06-03 00:07:18

+0

@Maesumi oop沒有意識到你不是OP,hehe – DanZimm

0
package QuadraticEquation; 

import javax.swing.*; 

public class QuadraticEquation { 
    public static void main(String[] args) { 
     String a = JOptionPane.showInputDialog(" Enter operand a : "); 
     double aa = Double.parseDouble(a); 
     String b = JOptionPane.showInputDialog(" Enter operand b : "); 
     double bb = Double.parseDouble(b); 
     String c = JOptionPane.showInputDialog(" Enter operand c : "); 
     double cc = Double.parseDouble(c); 
     double temp = Math.sqrt(bb * bb - 4 * aa * cc); 
     double r1 = (-bb + temp)/(2*aa); 
     double r2 = (-bb -temp)/(2*aa); 
     if (temp > 0) { 
      JOptionPane.showMessageDialog(null, "the equation has two real roots" +"\n"+" the roots are : "+ r1+" and " +r2); 

     } 
     else if(temp ==0) { 
      JOptionPane.showMessageDialog(null, "the equation has one root"+ "\n"+ " The root is : " +(-bb /2 * aa)); 

     } 

     else{ 

      JOptionPane.showMessageDialog(null, "the equation has no real roots !!!"); 
     } 
    }   
}