2011-04-03 17 views
-2

我想用+ ve或-ve符號將coeff getA(),getB()和getC()的多項式相加。 (+/-)ax^2(+/-)bx(+/-)c來刪除像0 x 2 + 5而不是2 x^2 + 0x + 5這樣的零coff的項。如何在toString方法中得到Polynomial中的符號?

public String toString() { 

    if (getA().equals(DEFAULT_A) 
     && getB().equals(DEFAULT_B) 
     && getC().equals(DEFAULT_C)) { 
     return "0"; 
    } else { 
     String poly = ""; 
     if (!getA().equals(DEFAULT_A)) { 
      poly = getA().toString() + "x^2"; 
     } 
     if (!getB().equals(MyDouble.zero)) { 
      if (getB().compareTo(MyDouble.zero)) { 
       return getB(); 
      } 
     } 
     poly += getB().toString() + "x"; 
     if (!getC().equals(MyDouble.zero)) { 
      poly += getC().toString; 
     } 

     return poly; 
    } 
} 
+3

顯示MyDouble.toString的'實現()',我們真的不能猜測發生了什麼事情在那裏... – Mat 2011-04-03 18:13:39

+0

重新格式化代碼;如果不正確請回復。 – trashgod 2011-04-03 19:24:06

+0

compareTo的返回類型是int,它給我錯誤compareTo行...說我不能比較getA().. etc..with零。 – javaLearner 2011-04-03 23:15:18

回答

2

這對於普通雙打來說會更簡單,這可能會讓您知道您可以做什麼。

public static String poly(double a, double b, double c) { 
    return (a == 0 ? "" : toNum(a) + "x^2 ") + 
      (b > 0 ? "+" : "") + 
      (b == 0 ? "" : toNum(b) + "x ") + 
      (c > 0 ? "+" : "") + 
      (c == 0 ? "" : c == 1 ? "1" : c == -1 ? "-1" : toNum(c)); 
} 

private static String toNum(double v) { 
    return v == 1 ? "" : v == -1 ? "-" : 
      v == (long) v ? Long.toString((long) v) : Double.toString(v); 
} 

public static void main(String... args) { 
    System.out.println(poly(1, 1.5, 2.5)); 
    System.out.println(poly(-1, -1, -1)); 
    System.out.println(poly(2, 0, 0)); 
    System.out.println(poly(0, -3, 0)); 
    System.out.println(poly(0, 0, -9)); 
} 

打印

x^2 +1.5x +2.5 
-x^2 -x -1 
2x^2 
-3x 
-9 
+0

我只能使用MyDOuble – javaLearner 2011-04-03 19:01:16

相關問題