56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
const readline = require("readline");
|
|
|
|
function createInterface() {
|
|
return readline.createInterface({
|
|
input: process.stdin,
|
|
output: process.stdout,
|
|
});
|
|
}
|
|
|
|
async function askNumber(min, max) {
|
|
// On attend que l'utilisateur entre un nombre
|
|
const number = await new Promise((resolve) => {
|
|
// On crée une interface pour lire la réponse
|
|
const interface = createInterface();
|
|
|
|
// On affiche un message à l'utilisateur
|
|
interface.question(
|
|
`Entrez un nombre entre ${min} et ${max} : `,
|
|
(answer) => {
|
|
// On convertit la réponse en nombre entier (base 10)
|
|
const number = parseInt(answer, 10);
|
|
|
|
// Si la saisie n'est pas un nombre
|
|
if (isNaN(number)) {
|
|
console.log("Erreur : Vous devez entrer un nombre");
|
|
|
|
// On ferme l'interface
|
|
interface.close();
|
|
|
|
// On relance la saisie
|
|
return resolve(askNumber(min, max));
|
|
}
|
|
|
|
// On ferme l'interface
|
|
interface.close();
|
|
|
|
// On retourne le nombre
|
|
resolve(number);
|
|
}
|
|
);
|
|
});
|
|
|
|
// Si le nombre est inférieur au minimum ou supérieur au maximum
|
|
if (number < min || number > max) {
|
|
console.log(`Erreur : Vous devez entrer un nombre entre ${min} et ${max}`);
|
|
|
|
// On relance la saisie
|
|
return await askNumber(min, max);
|
|
}
|
|
|
|
// On retourne le nombre
|
|
return number;
|
|
}
|
|
|
|
module.exports = { askNumber };
|