Skip to content

Commit 96c23e4

Browse files
committed
Fixed bug Lack of Input Validation and Error Handling in Calculator thinkswell#1164 for one project
1 parent 27ee633 commit 96c23e4

File tree

1 file changed

+74
-44
lines changed

1 file changed

+74
-44
lines changed

Calculator/Pratik1968/main.js

+74-44
Original file line numberDiff line numberDiff line change
@@ -3,60 +3,90 @@ let value = ""
33
let ans = 0
44

55

6-
function setInput(){
7-
let input = document.getElementById("ans");
6+
function setInput() {
7+
let input = document.getElementById("ans");
88
input.value = value
99
}
1010

11-
window.onload = function () {
11+
window.onload = function() {
1212
setInput()
1313
}
14-
function NumberButtonClick(number){
1514

16-
value +=number
15+
function NumberButtonClick(number) {
16+
let lastChar = value[value.length - 1];
1717

18-
setInput()
18+
if (lastChar === '/' && number === 0) {
19+
alert("Error: Division by zero is undefined.");
20+
return null;
21+
} else {
22+
value += number
23+
}
24+
25+
26+
setInput()
1927
}
20-
function functionButton(Function){
21-
22-
let input = document.getElementById("ans");
23-
if (input.value =="" || input.value==null) {return ;}
24-
switch(Function){
25-
case functionVar.add:
26-
27-
value+="+";
28-
break;
29-
case functionVar.substraction:
30-
value+="-";
31-
break;
32-
case functionVar.multiplication:
33-
value+="x";
34-
break;
35-
case functionVar.equal:
36-
ans = eval(value.replace("x","*").replace("%","*1/100").replace("^","**"));
37-
value = ans;
38-
break;
39-
case functionVar.division:
40-
value+="/";
41-
break;
42-
case functionVar.percentage:
43-
value+="%";
44-
break;
45-
case functionVar.power:
46-
value += "^";
47-
break;
48-
case functionVar.clear:
49-
value = "";
50-
break;
51-
case functionVar.backspace:
52-
value =value.slice(0,-1)
53-
break;
54-
case functionVar.decimal:
55-
value+=".";
56-
break;
28+
29+
function isOperator(value) {
30+
const operators = ['+', '-', '.', '^', '%', '/', 'x'];
31+
if (operators.includes(value)) {
32+
return true;
33+
}
34+
return false;
5735
}
5836

37+
function functionButton(Function) {
38+
39+
let input = document.getElementById("ans");
40+
if (input.value == "" || input.value == null) { return; }
41+
let lastChar = value[value.length - 1];
5942

60-
setInput()
43+
if (isOperator(lastChar) && Function !== '8') {
44+
return;
45+
}
46+
47+
48+
switch (Function) {
49+
case functionVar.add:
50+
if (lastChar !== "+")
51+
value += "+";
52+
break;
53+
case functionVar.substraction:
54+
if (lastChar !== "-")
55+
value += "-";
56+
break;
57+
case functionVar.multiplication:
58+
if (lastChar !== "x")
59+
value += "x";
60+
break;
61+
case functionVar.equal:
62+
ans = eval(value.replace("x", "*").replace("%", "*1/100").replace("^", "**"));
63+
value = ans;
64+
break;
65+
case functionVar.division:
66+
if (lastChar !== "/")
67+
value += "/";
68+
break;
69+
case functionVar.percentage:
70+
if (lastChar !== "%")
71+
value += "%";
72+
break;
73+
case functionVar.power:
74+
if (lastChar !== "^")
75+
value += "^";
76+
break;
77+
case functionVar.clear:
78+
value = "";
79+
break;
80+
case functionVar.backspace:
81+
value = value.slice(0, -1)
82+
break;
83+
case functionVar.decimal:
84+
if (lastChar !== "." && !value.includes('.'))
85+
value += ".";
86+
break;
87+
}
88+
89+
90+
setInput()
6191

6292
}

0 commit comments

Comments
 (0)