First of all we want to use a while loop to repeatedly ask the user if they want to perform another calculation. Then check user input after each calculation to determine whether to continue or exit.
const calculator = require('readline-sync');
let operations = ['+', '-', '*', '/'];
function operationQuestion() {
let operator, firstNumber, secondNumber;
while (true) { // Infinite loop, will break if user chooses to exit
// Ask for operation
operator = calculator.question(
"What operation would you like to perform?" +
"\nOptions:" +
"\nAddition (" + operations[0] + ")" +
"\nSubtraction (" + operations[1] + ")" +
"\nMultiplication (" + operations[2] + ")" +
"\nDivision (" + operations[3] + ")\n"
);
if (!operations.includes(operator)) {
console.log("That is not a valid operation. Please try again.");
continue; // Restart loop if invalid operator
}
// Get numbers from user
firstNumber = calculator.questionInt("Type the first number: ");
secondNumber = calculator.questionInt("Type the second number: ");
// Perform calculation
switch (operator) {
case '+':
console.log(`The result of ${firstNumber} ${operator} ${secondNumber} = ${firstNumber + secondNumber}`);
break;
case '-':
console.log(`The result of ${firstNumber} ${operator} ${secondNumber} = ${firstNumber - secondNumber}`);
break;
case '*':
console.log(`The result of ${firstNumber} ${operator} ${secondNumber} = ${firstNumber * secondNumber}`);
break;
case '/':
if (secondNumber === 0) {
console.log("Error: Division by zero is not allowed.");
} else {
console.log(`The result of ${firstNumber} ${operator} ${secondNumber} = ${firstNumber / secondNumber}`);
}
break;
default:
console.log("Something went wrong :(");
}
// Ask if the user wants to perform another calculation
let input = calculator.question("Do you want to perform another calculation? (yes/no): ").toLowerCase();
if (input !== 'yes' && input !== 'y') {
console.log("Goodbye!");
break; // Exit loop if user does not want another calculation
}
}
}