Как получить знаки в полином в методе toString? - PullRequest
0 голосов
/ 03 апреля 2011

я хочу добавить полиномы с коэффицентом getA (), getB () и getC () со знаками + ve или -ve.и удалите члены с нулевым coff, например, 2x ^ 2 + 5, а не 2x ^ 2 + 0x + 5 в общем, например, (+/-) ax ^ 2 (+/-) bx (+/-) c.

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;
    }
}

1 Ответ

2 голосов
/ 03 апреля 2011

Это было бы намного проще с простыми двойными числами. Это может дать вам представление о том, что вы можете сделать.

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
...