/* * Capacitor.java - provides one capacitor to the inductor/time simulator. * * This is essentially a 'double' with the ability to * a) know about industry-standard capacitor values, and * b) provide a String with its value in microfarads (e.g. "1,200 uF") * * Created on October 11, 2003, 10:37 PM * @author Barry barry@coilgun.info */ public class Capacitor { // Capacitor value, in farads private double capacitance; static public final int CAPACITORS_PER_DECADE = 12; static public final int NUMBER_DECADES = 7; static public final int NUMBER_CAPACITORS = NUMBER_DECADES * CAPACITORS_PER_DECADE + 1; /** Creates a new instance of Capacitor. * Do not call this publicly; use @see initCapacitorList instead. */ private Capacitor(double newValue) { capacitance = newValue; } /** Getter for property capacitance. * @return Value of capacitor (in farads) */ public double getCapacitance() { return capacitance; } /** Return the string representation of a capacitor */ public String toString() { Nearest nearest = new Nearest(); double microFarads = getCapacitance() * 1E6; return nearest.toStringSigFig(microFarads, 2) + " uF"; } /** * Capacitor factory method - * Create list of standard value capacitors. * The main advantage of this class are these standard 20% value components. */ public static Capacitor[] initCapacitorList() { Capacitor[] cap = new Capacitor[NUMBER_CAPACITORS]; // init the first decade explicitly with industry standard values cap[0] = new Capacitor(1.0E-6F); cap[1] = new Capacitor(1.2E-6F); cap[2] = new Capacitor(1.5E-6F); cap[3] = new Capacitor(1.8E-6F); cap[4] = new Capacitor(2.2E-6F); cap[5] = new Capacitor(2.7E-6F); cap[6] = new Capacitor(3.3E-6F); cap[7] = new Capacitor(3.9E-6F); cap[8] = new Capacitor(4.7E-6F); cap[9] = new Capacitor(5.6E-6F); cap[10] = new Capacitor(6.8E-6F); cap[11] = new Capacitor(8.2E-6F); // copy and scale the first decade into other decades for (int index=12; index