/*
 * MittTallformatUt.java   E.L. 2000-01-31
 *
 * Klassen beskriver et desimalformat som egner seg til utskrift av tall
 * under hverandre i kolonner. Antall posisjoner før og etter desimalkomma er parametre
 * i konstruktøren.
 */
package mittBibliotek;

import java.text.*;
import java.util.*;

public class MittTallformatUt {
  private DecimalFormat tallformat;

  public MittTallformatUt(int antPosFørKomma, int antPosEtterKomma) {
    char[] formatTegn = new char[antPosFørKomma + antPosEtterKomma + 1];
    Arrays.fill(formatTegn, '0');
    formatTegn[antPosFørKomma] = '.';
    tallformat = new DecimalFormat(new String(formatTegn));
  }

  public String format(double tall) { // kan også sende inn heltall som argument
    boolean fortegn = false;
    if (tall < 0) {  // Vi setter på fortegnet til slutt
      fortegn = true;
      tall = -tall;
    }

    String tekst = tallformat.format(tall);

    /* Bytter ut ledende nuller med blanke, men ikke siste foran komma */
    char[] tegnene = tekst.toCharArray();
    int pos = 0;
    while (pos < tegnene.length && tegnene[pos] == '0') {
      if (tegnene[pos + 1] != ',') tegnene[pos] = ' ';
      pos++;
    }

    String nyttFormat = new String(tegnene);
    if (fortegn) {
      if (pos > 0) {
        tegnene[pos - 1] = '-';
        nyttFormat = new String(tegnene);
      } else nyttFormat = "-" + nyttFormat;
    }
    return nyttFormat;
  }
}