这阵子在看牛客网上看一些编程题,发现有一部分的编程题是需要读取用户输入,并输出结果的。在我开发前端以来,使用 JS 读取用户输入的内容好像从没用过。所以一开始的我一头雾水。网上有介绍说 Node 的方法 readline 可以逐行读取用户输入信息。于是便在此对 readline 方法进行总结
readline 使用
| 12
 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()内放置你实现的函数代码。将用户输入作为参数传递就可以了。
这里贴上我实现的一道最小公倍数的数学题方法
| 12
 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()