class Calculator { constructor() { this.curr = ''; this.prew = ''; this.operator = ''; } clear() { this.curr = ''; this.prew = ''; this.operator = ''; } delete() { this.curr = this.curr.slice(0, -1) } append(val) { if (val === '0' && this.curr === '0') { this.curr = this.curr; } else { this.curr = this.curr + val; } } _calculate(prew, curr, operator) { switch (operator) { case 'ADD': return +prew + +curr; case 'SUB': return +prew - +curr; case 'MUL': return +prew * +curr; case 'DIV': return +prew / +curr; default: console.log('Invalid operator'); break; } } pressbutton(button) { switch (button) { case 'ACC': this.clear(); break; case 'DEL': this.delete(); break; case 'ADD': case 'SUB': case 'MUL': case 'DIV': if (this.curr === '' && this.prew !== '') { this.operator = button; break; } if (this.curr !== '' && this.prew !== '') { this.prew = this._calculate(this.prew, this.curr, this.operator); this.curr = ''; this.operator = ''; } else { if (this.curr === '' && this.prew === '') { this.curr = '0'; } this.prew = this.curr; this.curr = ''; } this.operator = button; break; case 'EQU': if (this.curr !== '' && this.prew !== '') { this.curr = this._calculate(this.prew, this.curr, this.operator); this.prew = ''; this.operator = ''; } break; case 'DOT': if (this.curr.includes('.')) { break; } if (this.curr === '') { this.curr = '0'; } this.append('.') break; case 'NEG': if (this.curr === '') { this.curr = '-'; } break; default: this.append(button) break; } } }