/* * Kulajda.java * * Created on 11. červenec 2002, 17:00 */ /** * * @author Petr */ public class Kulajda { protected class Oper { public static final int MULT = 0; public static final int DIV = 1; public static final int PLUS = 2; public static final int MINUS = 3; public static final int ID = 4; }; protected String EDIV = "Error - divided by zero"; protected int op = Oper.ID; protected boolean delete = true; public String display = "0"; protected double register = 0; protected double onDisp = 0; protected boolean isInteger = true; public String toString() { return display; } public String addNum(int Num) { if (delete == false) { display += Num; onDisp = Double.parseDouble(display); } else { onDisp = Num; display = String.valueOf(Num); delete = false; } return display; } public String times() { return eval(Oper.MULT); } public String divide() { return eval(Oper.DIV); } public String minus() { return eval(Oper.MINUS); } public String plus() { return eval(Oper.PLUS); } public String is() { String retVal; retVal = eval(Oper.ID); onDisp = register; return retVal; } protected String eval(int newOp) { double retVal; boolean err = false; switch (op) { case Oper.PLUS : retVal = register + onDisp; break; case Oper.MINUS : retVal = register - onDisp; break; case Oper.MULT : retVal = register * onDisp; break; case Oper.DIV : if (onDisp == 0) { err = true; retVal = 0; break; } retVal = register / onDisp; break; case Oper.ID : retVal = onDisp; break; default : retVal = 0; //Debug error } op = newOp; register = retVal; delete = true; isInteger = true; if (err == true) { return (display = EDIV); } else { return (display = String.valueOf(retVal)); } } public String dot() { if (isInteger == false) { //already float number return display; } isInteger = false; if (delete == true) { display = "0."; onDisp = 0; } else { display += "."; } delete = false; return display; } public String plusminus() { if (display == EDIV) { return EDIV; } onDisp = -onDisp; if (display.charAt(0) == '-') { display = display.substring(1); } else { display = '-' + display; } return display; } public String clear() { onDisp = 0; display = "0"; isInteger = true; delete = true; return display; } public String allClear() { clear(); register = 0; op = Oper.ID; return display; } }