解决前端编程题javascript Node且ACM模式下的输入输出问题

第一次做公司笔试题面对以下代码有些懵,不知是何意思,从何下手

啊这和我平常在力扣上练的不太一样,平常练的不用手动获取输入,但是下面的要

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);
    }
}()

开始解决问题,首先搞懂给出的代码是何意思

1、const rl = require("readline").createInterface({ input: process.stdin });

引入Node.js的readline模块,并创建一个接口进行标准输入

2、var iter = rl[Symbol.asyncIterator]();

使用Symbol.asyncIterator方法来创建一个异步迭代器。

3、const readline = async () => (await iter.next()).value;

声明一个异步函数readline,用于读取命令行输入的内容

4、async function () { ... }()

使用立即执行函数的方式创建一个异步函数,作为整个程序的入口

5、while(line = await readline()) { ... }

使用while循环,不断地从命令行读取输入内容,将每行读取的内容赋值给变量line。

6、let tokens = line.split(' ');

将读取的输入内容按照空格分隔,生成一个数组tokens。

7、let a = parseInt(tokens[0]);

将数组tokens中的第一个元素转换为整数类型,并赋值给变量a。

let b = parseInt(tokens[1]);

将数组tokens中的第二个元素转换为整数类型,并赋值给变量b。

总结:这段代码的作用是不断读取命令行输入的内容,将每行的内容按照空格分隔为两个整数,然后将这两个整数相加并打印到控制台。循环会一直进行,直到命令行输入结束。 

知道含义后怎么自行进行输入内容的获取呢?

1、输入内容为单行的

用以下代码进行输入的获取,以及输出

关键代码为:获取输入 let str = await readline(); 输出 console.log(str)

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
    let str = await readline();
    console.log(str)
}()

示例: 

2、输入内容为多行

方式一:有多少行就写几次await readline() 进行获取(适用输入内容行数确定的情况)

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
    //方式一
     let num = await readline();
     let n1 = await readline();
     let n2 = await readline();
     let n3 = await readline();
     console.log(num,n1,n2,n3)
}()

方式二:利用for循环或者while循环进行输入多行内容的统一获取,然后将其放入数组中 

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
    //方式二
    let num = await readline();
    let arr = [];
    for(let i = 0;i < num;i++){
       arr.push(parseInt(await readline()))
    }
    console.log(arr)
}()

 示例:

猜你喜欢

转载自blog.csdn.net/weixin_53141315/article/details/132655870