package loon.utils;
public class Calculator {
private final static int ADD = 0, SUBTRACT = 1, MULTIPLY = 2, DIVIDE = 3;
private float currentTotal;
public Calculator() {
this(0);
}
public Calculator(float number) {
this.currentTotal = number;
}
public Calculator add(String number) {
return convertToDouble(number, ADD);
}
public Calculator sub(String number) {
return convertToDouble(number, SUBTRACT);
}
public Calculator mul(String number) {
return convertToDouble(number, MULTIPLY);
}
public Calculator div(String number) {
return convertToDouble(number, DIVIDE);
}
private Calculator convertToDouble(String number, int operator) {
float dblNumber = Float.valueOf(number);
switch (operator) {
case ADD:
return add(dblNumber);
case SUBTRACT:
return sub(dblNumber);
case MULTIPLY:
return mul(dblNumber);
case DIVIDE:
return div(dblNumber);
default:
break;
}
return this;
}
public Calculator add(float number) {
currentTotal += number % 1.0 == 0 ? (int) number : number;
return this;
}
public Calculator sub(float number) {
currentTotal -= number % 1.0 == 0 ? (int) number : number;
return this;
}
public Calculator mul(float number) {
currentTotal *= number % 1.0 == 0 ? (int) number : number;
return this;
}
public Calculator div(float number) {
currentTotal /= number % 1.0 == 0 ? (int) number : number;
return this;
}
public int getInt() {
return (int) currentTotal;
}
public float getFloat() {
return currentTotal;
}
@Override
public String toString() {
return currentTotal % 1f == 0 ? Integer.toString(getInt()) : String.valueOf(currentTotal);
}
public Calculator equal(String number) {
currentTotal = Float.valueOf(number);
return this;
}
}