gpt4 book ai didi

javascript - 如何使用 nodejs 从 stdin 读取值

转载 作者:行者123 更新时间:2023-11-30 14:05:14 25 4
gpt4 key购买 nike

我试图从标准输入读取测试用例值,然后我将从标准输入读取不同的N值。例如:

If T = 3
I could have N = 200, N = 152, N = 35263

这是我第一次使用readline:

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


rl.on('line', (line) => {
for (let i = 0; i < line; i++) {
rl.on('line', (N) => {
console.log('N: ', N);
})
}

})

当我测试代码时,我得到了这个:

3
1
N: 1
N: 1
N: 1

它只读取 N 的一个值,我无法输入 2 个不同的值,然后它显示 N = 13 次。我该如何解决这个问题,以便根据测试用例的数量读取不同的 N 值?

最佳答案

每次您 rl.on() 您都会创建一个新的事件监听器。因此,当您在循环中执行此操作时,您最终会遇到多个监听器,它们都在等待输入并对输入使用react。您需要一个可以理解状态并执行您想要的操作的事件处理程序。例如,要将第一行作为输入的数量,读取该输入的数量,并将它们打印出来,您可能会这样做:

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

let n, res = []; // app state

rl.on('line', (line) => { // only ONE event listener
if (n === undefined) { // first input sets n
n = line
return
}
res.push(line) // push until you have n items
if (res.length >= n){
rl.close() // done
console.log("results: ", res)
}

})

关于javascript - 如何使用 nodejs 从 stdin 读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55544634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com