获取 readline 输入作为数组
Get readline input as an array
我现在正在做一个编程挑战,但我正在努力获得正确的输入。我的输出没有反馈,只有 "error" 这让我很难调试。这是输入:
4 2
1 4
2 9
4 7
5 8
我想这样收藏:
[4, 2, 1, 4, 2, 9, 4, 7, 5, 8];
测试环境告诉我像这样处理输入:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', (line) => {
var nums = line.split(' ');
/*Solve the test case and output the answer*/
});
我的 nums 一定是得到了错误的数组 variable.I 尝试了很多方法(通过 /n 和空格拆分,使用 for 循环迭代并推送...使用 rl.close...) 但由于我的输入几乎没有反馈,我在这里有点绝望。一个告诉我我的程序输出的简单界面将有助于...
解决方案
var nums = [];
rl.on("line", line => {
let newLine = line.split(" ");
newLine.map(line => nums.push(line));
});
rl.on("close", function() {
console.log(nums)
});
一旦输入正确,我就可以通过终端进行调试。
每次 rl
读取新行时都会触发 'line'
事件,因此您应该在侦听器的回调函数之外声明 nums
。像这样:
...
var sums = [];
rl.on('line', (line) => {
let newNumbers = line.split(' '); // [4, 2]
sums.concat(newNumbers);
});
...
您可能想了解 how 事件发射器和事件监听器在 JavaScript 中的工作方式。
我认为即使您注册了一个 'error'
事件侦听器也没有什么适合您的,因为一切都按预期工作。而且我相信一定有一个像 'end'
或 'closed'
这样的事件会在 rl
读取输入的所有内容后发出,你可以 console.log
你的 sums
数组在那里,我相信你能得到你想要的结果。
你不应该在右括号之后处理 sums
数组,JavaScript 是异步的,所以这些代码会在所有行被读取之前执行。如果有像 rl.close
这样的方法,你应该在这样的情况下调用它:
rl.on('line', (line) => {
...
if (line === undefined) { // or any terminal character which createInterface would return.
rl.close();
}
});
而且我相信 rl.close()
会像我上面说的那样发出事件,比如 'end'
或 'closed'
,把代码处理最后的 sums
放在那里.
A simple interface which tells me my program output would help...
您可以 运行 您的 nodejs 应用程序 nodejs!您可以下载并安装它,然后在您的终端node yourjscodefile.js
。当你 console.log(variable);
它会在终端输出。
我现在正在做一个编程挑战,但我正在努力获得正确的输入。我的输出没有反馈,只有 "error" 这让我很难调试。这是输入:
4 2
1 4
2 9
4 7
5 8
我想这样收藏:
[4, 2, 1, 4, 2, 9, 4, 7, 5, 8];
测试环境告诉我像这样处理输入:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', (line) => {
var nums = line.split(' ');
/*Solve the test case and output the answer*/
});
我的 nums 一定是得到了错误的数组 variable.I 尝试了很多方法(通过 /n 和空格拆分,使用 for 循环迭代并推送...使用 rl.close...) 但由于我的输入几乎没有反馈,我在这里有点绝望。一个告诉我我的程序输出的简单界面将有助于...
解决方案
var nums = [];
rl.on("line", line => {
let newLine = line.split(" ");
newLine.map(line => nums.push(line));
});
rl.on("close", function() {
console.log(nums)
});
一旦输入正确,我就可以通过终端进行调试。
每次 rl
读取新行时都会触发 'line'
事件,因此您应该在侦听器的回调函数之外声明 nums
。像这样:
...
var sums = [];
rl.on('line', (line) => {
let newNumbers = line.split(' '); // [4, 2]
sums.concat(newNumbers);
});
...
您可能想了解 how 事件发射器和事件监听器在 JavaScript 中的工作方式。
我认为即使您注册了一个 'error'
事件侦听器也没有什么适合您的,因为一切都按预期工作。而且我相信一定有一个像 'end'
或 'closed'
这样的事件会在 rl
读取输入的所有内容后发出,你可以 console.log
你的 sums
数组在那里,我相信你能得到你想要的结果。
你不应该在右括号之后处理 sums
数组,JavaScript 是异步的,所以这些代码会在所有行被读取之前执行。如果有像 rl.close
这样的方法,你应该在这样的情况下调用它:
rl.on('line', (line) => {
...
if (line === undefined) { // or any terminal character which createInterface would return.
rl.close();
}
});
而且我相信 rl.close()
会像我上面说的那样发出事件,比如 'end'
或 'closed'
,把代码处理最后的 sums
放在那里.
A simple interface which tells me my program output would help...
您可以 运行 您的 nodejs 应用程序 nodejs!您可以下载并安装它,然后在您的终端node yourjscodefile.js
。当你 console.log(variable);
它会在终端输出。