11
11
12
12
package simplejavacalculator ;
13
13
14
+ import static java .lang .Double .NaN ;
14
15
import static java .lang .Math .log ;
15
16
import static java .lang .Math .log10 ;
16
17
import static java .lang .Math .pow ;
@@ -33,7 +34,11 @@ private Double calculateBiImpl() {
33
34
return num2 ;
34
35
}
35
36
if (mode == BiOperatorModes .add ) {
36
- return num1 + num2 ;
37
+ if (num2 != 0 ) {
38
+ return num1 + num2 ;
39
+ }
40
+
41
+ return num1 ;
37
42
}
38
43
if (mode == BiOperatorModes .minus ) {
39
44
return num1 - num2 ;
@@ -57,7 +62,7 @@ public Double calculateBi(BiOperatorModes newMode, Double num) {
57
62
num2 = 0.0 ;
58
63
num1 = num ;
59
64
mode = newMode ;
60
- return Double . NaN ;
65
+ return NaN ;
61
66
} else {
62
67
num2 = num ;
63
68
num1 = calculateBiImpl ();
@@ -75,7 +80,7 @@ public Double reset() {
75
80
num1 = 0.0 ;
76
81
mode = BiOperatorModes .normal ;
77
82
78
- return Double . NaN ;
83
+ return NaN ;
79
84
}
80
85
81
86
public Double calculateMono (MonoOperatorModes newMode , Double num ) {
@@ -95,6 +100,13 @@ public Double calculateMono(MonoOperatorModes newMode, Double num) {
95
100
return Math .sin (num );
96
101
}
97
102
if (newMode == MonoOperatorModes .tan ) {
103
+ if (num == 0 || num % 180 == 0 ) {
104
+ return 0.0 ;
105
+ }
106
+ if (num % 90 == 0 && num % 180 != 0 )
107
+ return NaN ;
108
+ }
109
+
98
110
return Math .tan (num );
99
111
}
100
112
if (newMode == MonoOperatorModes .log ) {
@@ -103,10 +115,10 @@ public Double calculateMono(MonoOperatorModes newMode, Double num) {
103
115
if (newMode == MonoOperatorModes .rate ) {
104
116
return num / 100 ;
105
117
}
106
- if (newMode == MonoOperatorModes .abs ){
118
+ if (newMode == MonoOperatorModes .abs ){
107
119
return Math .abs (num );
108
120
}
109
-
121
+
110
122
// never reach
111
123
throw new Error ();
112
124
}
0 commit comments