diff --git a/buggyCalculator.ts b/buggyCalculator.ts index a8bde8b..c233bd0 100644 --- a/buggyCalculator.ts +++ b/buggyCalculator.ts @@ -9,13 +9,7 @@ function subtract(a: number, b: number): number { } function multiply(a: number, b: number): number { - let result = 0; - - for (let i = 0; i < a; i++) { - result += b; - } - - return result; + return a * b; } function divide(a: number, b: number): number { @@ -39,41 +33,65 @@ console.log("4. Divide"); rl.question("Choice: ", (choice) => { + if (!["1", "2", "3", "4"].includes(choice)) { + console.error("Unknown operation. Please enter a number between 1 and 4."); + rl.close(); + return; + } + rl.question("First number: ", (n1) => { - rl.question("Second number: ", (n2) => { + const num1 = parseInt(n1); - const num1: number = parseInt(n1); - const num2: number = parseInt(n2); + if (isNaN(num1)) { + console.error("Invalid input. Please enter a valid number."); + rl.close(); + return; + } - let result: number; + rl.question("Second number: ", (n2) => { - if (choice === "1") { - result = add(num1, num2); - } else if (choice === "2") { - result = subtract(num1, num2); - } else if (choice === "3") { - result = multiply(num1, num2); - } else if (choice === "4") { - result = divide(num1, num2); - } else { - console.log("Unknown operation"); + const num2 = parseInt(n2); + + if (isNaN(num2)) { + console.error("Invalid input. Please enter a valid number."); + rl.close(); return; } - console.log("Result:", result); + let result: number; + + try { + switch (choice) { + case "1": + result = add(num1, num2); + break; + case "2": + result = subtract(num1, num2); + break; + case "3": + result = multiply(num1, num2); + break; + case "4": + result = divide(num1, num2); + break; + default: + throw new Error("Unknown operation"); + } + + console.log("Result:", result); + } catch (error) { + if (error instanceof Error) { + console.error(`Error: ${error.message}`); + } else { + console.error("An unknown error occurred"); + } + } finally { + rl.close(); + } - rl.close(); }); }); -}); - -function factorial(n: number): number { - if (n === 0 || n === 1) { - return 1; - } - - return n * factorial(n - 1); -} \ No newline at end of file +}); \ No newline at end of file