TempConverter3.java Source code

Java tutorial

Introduction

Here is the source code for TempConverter3.java

Source

import java.text.*;

/* Print a table of Fahrenheit and Celsius temperatures, with decimal
 * points lined up.
 * @author Ian F. Darwin, http://www.darwinsys.com/
 * @version $Id: TempConverter3.java,v 1.4 2004/03/07 02:50:49 ian Exp $
 */
public class TempConverter3 extends TempConverter2 {
    protected FieldPosition fp;
    protected DecimalFormat dff;

    public static void main(String[] args) {
        TempConverter t = new TempConverter3();
        t.start();
        t.data();
        t.end();
    }

    // Constructor
    public TempConverter3() {
        super();
        dff = new DecimalFormat("#0.0");
        fp = new FieldPosition(NumberFormat.INTEGER_FIELD);
    }

    protected void print(float f, float c) {
        String fs = dff.format(f, new StringBuffer(), fp).toString();
        fs = prependSpaces(4 - fp.getEndIndex(), fs);

        String cs = df.format(c, new StringBuffer(), fp).toString();
        cs = prependSpaces(4 - fp.getEndIndex(), cs);

        System.out.println(fs + "  " + cs);
    }

    protected String prependSpaces(int n, String s) {
        String[] res = { "", " ", "  ", "   ", "    ", "     " };
        if (n < res.length)
            return res[n] + s;
        throw new IllegalStateException("Rebuild with bigger \"res\" array.");
    }
}

class TempConverter2 extends TempConverter {
    protected DecimalFormat df;

    public static void main(String[] args) {
        TempConverter t = new TempConverter2();
        t.start();
        t.data();
        t.end();
    }

    // Constructor
    public TempConverter2() {
        df = new DecimalFormat("#0.00");
    }

    protected void print(float f, float c) {
        System.out.println(df.format(f) + " " + df.format(c));
    }

    protected void start() {
        System.out.println("Fahr    Centigrade.");
    }

    protected void end() {
        System.out.println("-------------------");
    }
}

class TempConverter {

    public static void main(String[] args) {
        TempConverter t = new TempConverter();
        t.start();
        t.data();
        t.end();
    }

    protected void start() {
    }

    protected void data() {
        for (int i = -40; i <= 120; i += 10) {
            float c = (i - 32) * (5f / 9);
            print(i, c);
        }
    }

    protected void print(float f, float c) {
        System.out.println(f + " " + c);
    }

    protected void end() {
    }
}