赛码网在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]));
});
输入:1 1
返回值:2
单行还好,如果是碰到多行就要转化一下
多行输入
var readline = require('readline');
const rl = readline.createInterface({input: process.stdin,output: process.stdout
});// 初始化一个数组来存储输入的每一行数据
let lines = [];function changeNum(arr) {return arr.map(item => {// 检查当前项是否为数组,如果是,则递归调用该函数if (Array.isArray(item)) {return changeNum(item);} else {// 将字符串转换为数字return Number(item);}});
}
rl.on('line', function (line) {// 去除每行首尾的空格,然后按空格分割每一行lines.push(line.trim().split(' '));if(lines.length===5){//有几行写多少,5只是针对5行输入lines=changeNum(lines)//书写自己代码的逻辑console.log(lines);
}});
代码解释:
这段代码使用了Node.js的readline模块来从标准输入读取数据。下面是对代码的逐行分析:
-
var readline = require('readline');- 这行代码引入了Node.js的readline模块,该模块允许程序从标准输入读取数据。 -
const rl = readline.createInterface({ ... });- 这行代码创建了一个readline.Interface对象,它配置了readline模块以从标准输入(process.stdin)读取数据,并将输出发送到标准输出(process.stdout)。 -
let lines = [];- 声明一个变量lines,用来存储从标准输入读取的每一行数据。 -
function changeNum(arr) { ... }- 定义了一个名为changeNum的函数,它接受一个数组arr作为参数。这个函数的目的是将数组中的所有字符串元素转换为数字。 -
return arr.map(item => { ... });- 使用map函数遍历数组arr中的每个元素。对于每个元素,执行以下操作:-
if (Array.isArray(item)) { ... }- 如果元素item是一个数组,递归调用changeNum函数以处理嵌套数组。 -
return Number(item);- 如果元素item不是数组,使用Number函数将其转换为数字。
-
-
rl.on('line', function (line) { ... });- 为readline接口添加一个事件监听器,当接收到一行输入时触发。这个事件监听器做了以下事情:-
lines.push(line.trim().split(' '));- 读取一行输入,去除首尾的空格,然后使用空格作为分隔符将其分割成数组,并添加到lines数组中。 -
if(lines.length===5){ ... }- 当lines数组的长度达到5时,执行以下操作:-
lines=changeNum(lines);- 调用changeNum函数,将lines数组中的所有字符串元素转换为数字。 -
console.log(lines);- 打印转换后的lines数组。
-
-
这段代码的主要目的是从标准输入读取数据,每读取5行数据后,将这些数据中的字符串转换为数字,并打印转换后的数组。这可能是为了处理某种格式的输入数据,例如,每5行数据表示一个记录,需要将这些记录中的数字字符串转换为实际的数字类型。
输入:
1
2 3
3
4 5
5
输出:[ [ 1 ], [ 2, 3 ], [ 3 ], [ 4, 5 ], [ 5 ] ]
之后就按数组每一项计算
注意:
如果不使用changeNum转化,得到的数据是
[ [ '1' ], [ '2', '3' ], [ '3' ], [ '4', '5' ], [ '5' ] ]