牛客在JavaScript Node的语言+acm模式下,如何处理多行输入?

2,192 阅读1分钟

牛客网在JS Node的语言下,acm模式的默认标准输入输出代码是这样的:

const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
rl.on('line', function (line) {
    const tokens = line.split(' ');
    console.log(parseInt(tokens[0]) + parseInt(tokens[1]));
});

虽然刚接触这个,但看着也大概晓得line存储的就是你输入的数据。但单行还好,如果是碰到多行怎么搞?调用多个rl.on? 还是将line改为lines??

找了一圈,终于找到答案了。先看看在输入数据有多行的情况下,这个默认代码获取到的数据到底有些什么?

rl.on('line', function (line) {
        console.log(line)
});

image.png

会发现,它是会分别存储你输入的两行数据的。所以面对这种输入有两行数据的题目,可以这样拿到数据:

  1. 定义一个数组
  2. 将输入的数据push到这个数组里
  3. 加个if判断,当数组的长度达到了题目所给出的输入数据的数量时,就开始进行对应的算法操作。

具体例子:

image.png