这阵子在看牛客网上看一些编程题,发现有一部分的编程题是需要读取用户输入,并输出结果的。在我开发前端以来,使用 JS 读取用户输入的内容好像从没用过。所以一开始的我一头雾水。网上有介绍说 Node 的方法 readline 可以逐行读取用户输入信息。于是便在此对 readline 方法进行总结
readline 使用
1 2 3 4 5 6 7 8 9 10 11 12
| const readline = require('readline')
const rl = readline.createInterface({ input: process.stdin, output: process.stdout, })
rl.on('line', function (input) { console.log(`接收到:${input}`) })
|
用户输入的内容通过上述代码便可以获取到了。而在编程题中还需要得到输出,通常情况下 console.log()在控制台打印的结果也就是输出的结果。也就是说在上面的代码中 console.log()内放置你实现的函数代码。将用户输入作为参数传递就可以了。
这里贴上我实现的一道最小公倍数的数学题方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| const readline = require('readline')
const rl = readline.createInterface({ input: process.stdin, output: process.stdout, })
rl.on('line', function (line) { const nums = line.split(' ') console.log(getMinNum(parseInt(nums[0]), parseInt(nums[1]))) })
var getMinNum = function (num1, num2) { let aIn = [], bIn = [], maxIn = 0, maxNum = 0 for (let i = 1; i < Math.ceil(Math.sqrt(num1)); i++) { if (num1 % i === 0) { aIn.push(i) } } for (let j = 1; j < Math.ceil(Math.sqrt(num2)); j++) { if (num2 % j === 0) { bIn.push(j) } }
const length = Math.min(aIn.length, bIn.length) for (let p = 0; p < length; p++) { if (aIn[p] === bIn[p]) { maxIn = aIn[p] } } maxNum = (num1 / maxIn) * (num2 / maxIn) * maxIn return maxNum }
|
在读取用户输入内容的过程中,程序不会停止,也就是在命令行里一直监听用户的输入。想要关闭监听用户的输入,可以使用 rl 的 close 方法:
rl.close()