Kalkulator1.java [Last ned]

/*
 *  Klassen er første steg på veien mot en kalkulator.
 *
 *  Kalkulatoren er i stand til å bygge opp heltall,
 *  men kan foreløpig ikke utføre regneoperasjoner.
 *
 *  Merk at navnet er Kalkulator1. Den ferdige løsningen
 *  heter bare Kalkulator.
 */
 
public class Kalkulator1 {
 
  private int     tall;         // Nåværende verdi til kalkulatoren
  private int     forrige;      // Forrige innleste tall
  private boolean inputFase;    // Har vi startet på et tall?
  private char    operat;       // Forrige operator
 
 
  public Kalkulator1() {
    nullstill();
  }
 
 
  // Sett kalkulatoren tilbake til utgangsposisjon.
  public void nullstill() {
    tall = 0;
    forrige = 0;
    inputFase = false;
    operat = ' ';
  }
 
 
  // Behandle et nytt siffer.
  public void siffer(int n) {
    if ( inputFase ) {
      if ( tall<0 )
        tall = 10*tall-n;
      else
        tall = 10*tall+n;
    }
    else {
      forrige = tall;
      tall = n;
      inputFase = true;
    }
  }
 
 
  // Behandle en operator
  public void oper(char op) {
 
    // Her må det utføres en regneoperasjon.
    // Forrige operator (operat) bestemmer
    // hva som skal gjøres.
 
    operat = op;
    inputFase = false;
  }
 
 
  // Metoden snur fortegnet på nåværende verdi.
  public void snuFortegn() {
    tall = -tall;
  }
 
 
  // Behandling av "er-lik".
  public void erLik() {
    oper( '=' );
  }
 
 
  // Returner nåværende verdi.
  public String hentVerdi() {
 
    // Her bør det kontrolleres at vi ikke
    // har delt på 0.
 
    return Integer.toString(tall);
  }
 
 
  // Skriver tilstanden i kalkulatoren til konsollet.
  // Brukes kun for testing.
  public void dump() {
    String s = "Kalkulator: "
      + "tall="         + tall
      + ", forrige="    + forrige
      + ", inputFase="  + inputFase
      + ", operat="     + operat;
    System.out.println(s);
  }
 
}
 
Kildekode blir vist ved hjelp av GeSHi.