diff --git a/src/simplejavacalculator/Calculator.java b/src/simplejavacalculator/Calculator.java index 5f016ac..0e204d1 100644 --- a/src/simplejavacalculator/Calculator.java +++ b/src/simplejavacalculator/Calculator.java @@ -47,6 +47,9 @@ private Double calculateBiImpl() { return num1 * num2; } if (mode.equals(BiOperatorModes.divide)) { + if (num2 == 0){ + return NaN; + } return num1 / num2; } if (mode.equals(BiOperatorModes.xpowerofy)) { @@ -92,6 +95,9 @@ public Double calculateMono(MonoOperatorModes newMode, Double num) { return Math.sqrt(num); } if (newMode.equals(MonoOperatorModes.oneDividedBy)) { + if(num == 0) { + return NaN; // This line of code handles division by zero to avoid infinity + } return 1 / num; } if (newMode.equals(MonoOperatorModes.cos)) { diff --git a/src/simplejavacalculator/UI.java b/src/simplejavacalculator/UI.java index 087bfb1..565f5d8 100644 --- a/src/simplejavacalculator/UI.java +++ b/src/simplejavacalculator/UI.java @@ -299,8 +299,14 @@ public void actionPerformed(ActionEvent e) { if (source == butabs) writer(calc.calculateMono(Calculator.MonoOperatorModes.abs, reader())); - if (source == butEqual) - writer(calc.calculateEqual(reader())); + if (source == butEqual){ + Double result = calc.calculateEqual(reader()); + if (Double.isNaN(result)){ // it checks for math errors (like dividing by 0) and if there is one, it returns + text.setText("Invalid Operation"); // "invalid operation". If not, it returns the result + } else { + writer(result); + } + } if (source == butCancel) writer(calc.reset());