node.js怎么读取多行输入

是这样的,在牛客、leadcode等平台上有js做编程题,碰到有输入的,一般我都用node的平台写

var readline=require('readline');
const r1=readline.createInterface({
    input:process.stdin,
    output:process.stdout
    
});

r1.on('line',function(line){
    var data=line;
    ******这里再写逻辑代码,最后console.log()输出
});

如果碰到输入的一行有多个数据,比如 5 25,那么我就用

var data=line.split(' ')[0],
var data=line.split(' ')[1]

来分别拿到两个数据。

现在的问题是,碰到有些题目的输入有多行,比如下面这道题目这种有两行输入的,改怎么分别拿到两行的输入数据,node.js没有好好学过,现在就是为了做题,试过用line.split('\n')[0]、line.split('\n')[1]拿不到第一行和第二行的数据,看了API好像是line每次只能读如一行数据,那么请问各位前辈们,我该怎么样才能拿到多行的输入数据呢?或者说碰到这种有多行输入的编程题我用js能不能写?该怎么写? 谢谢指点!
图片描述

阅读 11.2k
2 个回答

之前我就碰到过这种困扰,特地写过一篇node做编程题的输入处理,可以参考下:用node.js做编程题

既然可以用 on("line", ...),那么在回调里肯定是可以分别处理第1行的第2行的,当你需要的数据都获取完之后,就可以进行业务逻辑了。比如

const lines = [];
r1.on("line", function(line) {
    lines.push(line);
    if (lines.length === 2){
        const num1 = parseInt(lines[0], 10);
        const num2 = parseInt(lines[1], 10);
        // deal with num1 and num2
    }
});

当然这种做法比较适合逐行输入的情况,你也可以直接用 fs.readFile ^ 来读取所有文件内容。

fs.readFile('/etc/datafile', "utf8", (err, data) => {
  if (err) throw err;
  // 这里可以对 data 进行 split 操作
  console.log(data);
});
推荐问题
宣传栏