JS读取用户命令行输入的信息

685 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

这阵子在看牛客网上看一些编程题,发现有一部分的编程题是需要读取用户输入,并输出结果的。在我开发前端以来,使用JS读取用户输入的内容好像从没用过。所以一开始的我一头雾水。网上有介绍说Node的方法readline可以逐行读取用户输入信息。于是便在此对readline方法进行总结

readline使用

// 1.引入readline模块
const readline = require('readline');
// 2.创建 Interface 类的实例
const rl = readline.createInterface({
  input: process.stdin,  // 输入的流
  output: process.stdout // 输出的流
});
// 监听line事件,读取用户输入的一行内容(用户敲回车键之前的所有内容)
rl.on('line', function(input){
	// input便是用户输入的一行内容
	console.log(`接收到:${input}`);
})

用户输入的内容通过上述代码便可以获取到了。而在编程题中还需要得到输出,通常情况下console.log()在控制台打印的结果也就是输出的结果。也就是说在上面的代码中console.log()内放置你实现的函数代码。将用户输入作为参数传递就可以了。

在读取用户输入内容的过程中,程序不会停止,也就是在命令行里一直监听用户的输入。想要关闭监听用户的输入,可以使用rl的close方法:

rl.close()

该方法是Javascript在Node引擎中读取用户输入的 还有V8引擎,其代码如下:

while(line=readline()){
    var lines = line.split(' ');
    var a = parseInt(lines[0]);
    var b = parseInt(lines[1]);
    print(a+b);
}

其他更多的编程语言读取用户输入可以参考如下:

Java:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in); while (in.hasNextInt()) { //注意while处理多个case  int a = in.nextInt();
            int b = in.nextInt();
            System.out.println(a + b);
        }
    }
}

Python:

import sys
try:
    while True:
        line = sys.stdin.readline().strip()
        if line == '':
            break
        lines = line.split()
        print int(lines[0]) + int(lines[1])
except:
    pass

Python3:

import sys 
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

Go:

package main
import (
    "fmt"
)
func main() {
  a:=0
  b:=0
  for {
        n, _ := fmt.Scan(&a,&b)
        if n == 0 {
                break
        } else {
                fmt.Printf("%d\n",a+b)
        }
  }
}

参考连接: www.nowcoder.com/discuss/276