1111
1212package simplejavacalculator ;
1313
14+ import static java .lang .Double .NaN ;
1415import static java .lang .Math .log ;
1516import static java .lang .Math .log10 ;
1617import static java .lang .Math .pow ;
@@ -33,7 +34,11 @@ private Double calculateBiImpl() {
3334 return num2 ;
3435 }
3536 if (mode == BiOperatorModes .add ) {
36- return num1 + num2 ;
37+ if (num2 != 0 ) {
38+ return num1 + num2 ;
39+ }
40+
41+ return num1 ;
3742 }
3843 if (mode == BiOperatorModes .minus ) {
3944 return num1 - num2 ;
@@ -57,7 +62,7 @@ public Double calculateBi(BiOperatorModes newMode, Double num) {
5762 num2 = 0.0 ;
5863 num1 = num ;
5964 mode = newMode ;
60- return Double . NaN ;
65+ return NaN ;
6166 } else {
6267 num2 = num ;
6368 num1 = calculateBiImpl ();
@@ -75,7 +80,7 @@ public Double reset() {
7580 num1 = 0.0 ;
7681 mode = BiOperatorModes .normal ;
7782
78- return Double . NaN ;
83+ return NaN ;
7984 }
8085
8186 public Double calculateMono (MonoOperatorModes newMode , Double num ) {
@@ -95,6 +100,13 @@ public Double calculateMono(MonoOperatorModes newMode, Double num) {
95100 return Math .sin (num );
96101 }
97102 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+
98110 return Math .tan (num );
99111 }
100112 if (newMode == MonoOperatorModes .log ) {
@@ -103,10 +115,10 @@ public Double calculateMono(MonoOperatorModes newMode, Double num) {
103115 if (newMode == MonoOperatorModes .rate ) {
104116 return num / 100 ;
105117 }
106- if (newMode == MonoOperatorModes .abs ){
118+ if (newMode == MonoOperatorModes .abs ){
107119 return Math .abs (num );
108120 }
109-
121+
110122 // never reach
111123 throw new Error ();
112124 }
0 commit comments