2015-03-31 75 views
0

關於二次方程式(在此處瞭解更多:http://www.mathsisfun.com/algebra/quadratic-equation.html)。我已經將方程的a,b和c作爲輸入。一個樣本方程將是:21x^2 - 8x - 4 這裏,a = 21,b = -8,c = -4。所以,在求解(沒有公式)時, => 21x^2 - 14x + 6x - 4 = 0.二次方程式因子計算

我需要兩個中間數字,也就是在這種情況下,14和6(讀取因子)。我認爲我所做的一切都是正確的,但投入似乎是無限的,並沒有停下來。你能糾正這個錯誤嗎?我也很想知道爲什麼會發生這種情況。

import java.util.Scanner; 
public class QuadFact { 
    static Scanner sc = new Scanner(System.in); 
    static int a,b,c; 
    static int P, diff, p; 
    static int i; 
    static boolean found = false; 

    void accept(){ 
     System.out.println("Enter the a, b, c"); 
     a = sc.nextInt(); b = sc.nextInt(); c = sc.nextInt(); 
    } 

    void compute(){ 
     P = a * c; 
     diff = 0; 
     while(!found){ 
      for (i = b + 1;;i++){ 
       diff = i - b; 
       p = i * diff; 
       if (p==P) { 
        found = true; 
        break; 
       } 
      } 
     } 
    } 

    void display(){ 
     System.out.print("These are the raw numbers, should be correct. 
     Still,\n it is advisable you verify it."); 
     System.out.println("One factor: " + i); 
     System.out.println("Other factor: " + diff); 
    } 

    public static void main(String[] args){ 
     QuadFact a = new QuadFact(); 
     a.accept(); 
     a.compute(); 
     a.display(); 
    } 
} 
+0

嘗試在此處張貼您的代碼。我們可以幫你格式化它。鏈接可能會死亡,並且有些防火牆(例如我自己)的某些人甚至無法訪問您的鏈接。 – 2015-03-31 12:15:10

+0

好吧,當您嘗試使用調試器進行調試時發生了什麼情況,或者使用println語句查看代碼在關鍵點處執行的操作時發生了什麼? – 2015-03-31 12:27:01

+0

你的標誌混淆了。在你的例子中,你想要的數字是-14和6,而不是14和6.你應該尋找產品P和總和b的兩個數字,而你似乎在搜索產品P和差異b的數字。 – 2015-03-31 12:39:24

回答

0

我認爲你必須在b的「兩邊」看一個因子對,這個因子對加起來就是b,產生a * c。

void compute(){ 
    P = a * c; 
    while(!found){ 
    for(i = 1; ; i++){ 
      diff = b - i; 
      if (i * diff == P) { 
       found = true; 
       break; 
      } 
      diff = b + i; 
      if (-i * diff == P) { 
       found = true; 
       break; 
      } 
     } 
    } 
}