Javascript node环境输入
前言
readline函数
readLine()是读取流数据的时候用的,当读到换行标记'\n'、'\r'(回车)时,会跟着换行,同时会以字符串形式返回这一行的数据,当读取完所有的数据时会返回null
rl.on() rl.on('line',(line)=>{})相当于开启读行的监听,读完一行执行回调。 rl.on('close',()=>{})结束读取的回调。可以在这里处理全局变量
rl.close() 停止读取
1、单行输入
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
let tokens = line.split(' ');
let a = parseInt(tokens[0]);
let b = parseInt(tokens[1]);
console.log(a + b);
}
}()
2、确定的多行输入
例题:写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母) 输入描述: 第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。
输入:
ABCabc
A
输出:
2
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
// 应该输入的行数
let num = 2;
let inputs =[];
rl.on('line', function (line) {
inputs.push(line);
if(inputs.length === num){
// 写你需要的算法内容,inputs内为输入的两个数组
console.log(inputs[0], inputs[1])
// 处理完一组数据后需要清空 inputs,使其容纳下一组数据
inputs = [];
}
});
3、可知的多行输入
输入描述: 第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。 具体格式可以参考下面的"示例"。
输入:
3
2
2
1
输出:
1
2
const rl = require("readline").createInterface({ input: process.stdin });
let num = 0;
let inputs = [];
rl.on('line', function (line) {
// 为该样例需要的输入行数
if(num === 0){
num = parseInt(line)
}else{
// 将后面的输入存入到inputs数组中
inputs.push(line);
}
// 输入完成,开始正式的逻辑实现
if(inputs.length === num){
for(let item of inputs){
// item为数字后的每行输入
console.log(item)
// 置空,开始下一组数据
num = 0;
inputs = [];
}
}
});
4、处理多行输入(行数不明确)
牛客网华为机试题 HJ19 简单错误记录 输入描述: 每组只包含一个测试用例。一个测试用例包含一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。 输出描述: 将所有的记录统计并将结果输出,格式:文件名 代码行数 数目,一个空格隔开,如:
输入:
D:\zwtymj\xccb\ljj\cqzlyaszjvlsjmkwoqijggmybr 645
E:\je\rzuwnjvnuz 633
C:\km\tgjwpb\gy\atl 637
F:\weioj\hadd\connsh\rwyfvzsopsuiqjnr 647
E:\ns\mfwj\wqkoki\eez 648
D:\cfmwafhhgeyawnool 649
E:\czt\opwip\osnll\c 637
G:\nt\f 633
F:\fop\ywzqaop 631
F:\yay\jc\ywzqaop 631
D:\zwtymj\xccb\ljj\cqzlyaszjvlsjmkwoqijggmybr 645
输出:
rzuwnjvnuz 633 1
atl 637 1
rwyfvzsopsuiqjnr 647 1
eez 648 1
fmwafhhgeyawnool 649 1
c 637 1
f 633 1
ywzqaop 631 2
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let inputs = [];
let handleData = [];
rl.on('line', function (line) {
if(!inputs.includes(line)){
inputs.push(line);
}
});
// 输入结束时,在 close 中对数据进行处理
rl.on('close', function () {
for(let item of inputs){
console.log(item)
}
});