@@ -22,59 +22,40 @@ btns.forEach((btn) => {
2222
2323 handlingZeroFollowedByAdecimal ( buttonValue ) ;
2424
25- removesDecimalPointIfPrecededByAnOperator ( buttonValue )
26-
27-
28-
29-
30-
31-
32-
33-
34- if ( ! isNaN ( Number ( buttonValue ) ) ) {
35- screen . innerText = buttonValue ;
36- data . push ( screen . innerText ) ;
37- screen . innerText = data . join ( "" ) ;
38- }
39-
40-
41-
42-
43-
44-
45-
46- function userClicksOnEqualButton ( button ) {
47- if ( button === "=" ) {
48- try {
49- const replacedArray = data . map ( ( item ) => item === "x" ? "*" : item === "÷" ? "/" : item ) ;
50- // Check if the expression involves 0/0
51- // if (areYouDivindingByZero(replacedArray)) {
52- // screen.innerText = "You cannot divide by zero. Press AC";
53- // }
54-
55- if ( areYouDividingdZeroByZero ( replacedArray ) ) {
56- screen . innerText = "0÷0 is an invalid format. Press AC" ;
57- } else {
58- let result = eval ( replacedArray . join ( "" ) ) ;
59- console . log ( result ) ;
60- displayResult ( replacedArray , result ) ;
61- screen . innerText =
62- result === Infinity
63- ? "You cannot divide by zero. Press AC"
64- : result ;
65- // divideByZero(screen, result);
66- data = [ ] ;
67- data . push ( result ) ;
25+ removesDecimalPointIfPrecededByAnOperator ( buttonValue ) ;
26+
27+ handleNumberButton ( buttonValue ) ;
28+
29+ function userClicksOnEqualButton ( button ) {
30+ if ( button === "=" ) {
31+ try {
32+ const replacedArray = data . map ( ( item ) =>
33+ item === "x" ? "*" : item === "÷" ? "/" : item
34+ ) ;
35+ // Check if the expression involves 0/0
36+ // if (areYouDivindingByZero(replacedArray)) {
37+ // screen.innerText = "You cannot divide by zero. Press AC";
38+ // }
39+
40+ if ( areYouDividingdZeroByZero ( replacedArray ) ) {
41+ screen . innerText = "0÷0 is an invalid format. Press AC" ;
42+ } else {
43+ let result = eval ( replacedArray . join ( "" ) ) ;
44+ console . log ( result ) ;
45+ displayResult ( replacedArray , result ) ;
46+ screen . innerText =
47+ result === Infinity
48+ ? "You cannot divide by zero. Press AC"
49+ : result ;
50+ // divideByZero(screen, result);
51+ data = [ ] ;
52+ data . push ( result ) ;
53+ }
54+ } catch ( e ) {
55+ screen . innerText = `${ e . name } press AC` ;
56+ }
6857 }
69- } catch ( e ) {
70- screen . innerText = `${ e . name } press AC` ;
7158 }
72- }
73-
74- }
75-
76-
77-
7859
7960 function areYouDivindingByZero ( array ) {
8061 for ( let i = 0 ; i < array . length - 2 ; i ++ ) {
@@ -115,7 +96,6 @@ function userClicksOnEqualButton(button) {
11596
11697// end of forEach() statement
11798
118-
11999function deteLastEntry ( ) {
120100 let newArray = data . slice ( 0 , - 1 ) ;
121101 screen . innerText = newArray . join ( "" ) ;
@@ -126,7 +106,7 @@ function deteLastEntry() {
126106}
127107
128108function canUserAddDot ( button ) {
129- if ( button === "." ) {
109+ if ( button === "." ) {
130110 var dotAllowed = true ;
131111 for ( var i = data . length - 1 ; i >= 0 ; i -- ) {
132112 console . log ( "data > " + data [ i ] ) ;
@@ -158,17 +138,17 @@ function deleteEverythingFromScreen(button) {
158138}
159139
160140function toggleSign ( button ) {
161- if ( button === "minus" ) {
141+ if ( button === "minus" ) {
162142 let currentExpression = data . join ( "" ) ;
163143 let reversedExpression = currentExpression . split ( "" ) . join ( "" ) ;
164144 let match = reversedExpression . match ( / ( \d + ( \. \d + ) ? ) | ( \D + ) / ) ; // Match a number or non-digit
165145 // debugger
166-
146+
167147 if ( match ) {
168148 let start = currentExpression . length - match [ 0 ] . length ;
169149 let end = currentExpression . length ;
170150 let currentValue = Number ( match [ 0 ] ) ;
171-
151+
172152 if ( ! isNaN ( currentValue ) ) {
173153 // If it's a number, toggle its sign
174154 currentValue = - currentValue ;
@@ -178,9 +158,7 @@ function toggleSign(button) {
178158 screen . innerText = data . join ( "" ) ;
179159 }
180160 }
181-
182161 }
183-
184162}
185163
186164function insertOpeningParenthesis ( button ) {
@@ -224,13 +202,17 @@ function removesDecimalPointIfPrecededByAnOperator(button) {
224202 if ( data . slice ( - 1 ) [ 0 ] === "." ) {
225203 data . pop ( ) ;
226204 }
227- button === "*"
228- ? ( button = "x" )
229- : button === "/"
230- ? ( button = "÷" )
231- : button ;
205+ button === "*" ? ( button = "x" ) : button === "/" ? ( button = "÷" ) : button ;
232206
233207 data . push ( button ) ;
234208 screen . innerText = data . join ( "" ) ;
235209 }
236210}
211+
212+ function handleNumberButton ( button ) {
213+ if ( ! isNaN ( Number ( button ) ) ) {
214+ screen . innerText = button ;
215+ data . push ( screen . innerText ) ;
216+ screen . innerText = data . join ( "" ) ;
217+ }
218+ }
0 commit comments