有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在toString方法中获得多项式中的符号?

我想把coeff 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) 个答案

  1. # 1 楼答案

    这将是一个简单得多与普通双打,这可能会给你一个想法,你可以做什么

    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