public final class Polynomial { // mutable members should be private private final int [] coefficients = new int [3]; // Constant Polynomial (final int a) { this (a, 0, 0); } // Linear Polynomial (final int a, final int b) { this (a, b, 0); } // Quadratic Polynomial (final int a, final int b, final int c) { coefficients[0] = a; coefficients[1] = b; coefficients[2] = c; } // evalAt(x) == c[0] + c[1]*x + c[2]*x*x + ... int evalAt (int x) { // Horner's rule: c[0] + x * (c[1] + x * (c[2] + ....)) // Know by ancient Perian and Chinese mathematicians int sum = coefficients[coefficients.length-1]; for (int i=coefficients.length-2; i>=0; i--) { sum = coefficients [i] + x * sum; } return sum; } boolean isLinear () { for (int i=2; i<coefficients.length; i++) { if (coefficients[i]!=0) return false; } return true; } @java.lang.Override // The annotation is recommended public String toString () { return String.format ("%d%+d*x%+d*x*x", coefficients[0], coefficients[1], coefficients[2]); } }