gpt4 book ai didi

javascript - 输入玩家数量,然后使用数字创建玩家数组?

转载 作者:行者123 更新时间:2023-11-29 15:13:40 25 4
gpt4 key购买 nike

var n
var players = []

var rl = readline.createInterface(process.stdin, process.stdout);

rl.question("Enter number of players ", function(answer) {
//Use number of players to generate array of player names

for (n = 0; n < parseInt(answer); n++) {
var playerNumber = n + 1
rl.question("Enter name of player " + playerNumber, function(answer) {
players.push(answer)});
// stops prompting after asking for name of player 1?
}

});
rl.close;
rl.on('close', function(){

console.log("The players are: " + players.toString());
});

这一直有效,直到“输入玩家 1 的名字”,代码存储了它的值。代码不提示其余玩家。为什么?

我还尝试用“while”循环替换“for”循环,但结果更糟。它甚至没有开始提示玩家 1 的名字。为什么会这样?感谢帮助 :) 谢谢大家

var readline = require('readline');
var n
var players = []

var rl = readline.createInterface(process.stdin, process.stdout);

rl.question("Enter number of players ", function(answer) {
//Use number of players to generate array of player names

while (n < parseInt(answer)) {
var playerNumber = n + 1
rl.question("Enter name of player " + playerNumber, function(answer) {
players.push(answer)});
n++;
// does not even start prompting name of player 1?
}

});
rl.close;
rl.on('close', function(){

console.log("The players are: " + players.toString());
});

编辑:尝试将 rl.close 移出循环。问题仍然是一样的,这是我的控制台中显示的内容:

输入玩家数量

(输入)4

输入玩家1的名字

(输入)玩家 1

(控制台停止提示,当我尝试添加更多名称并结束进程时,数组只存储玩家 1 的名称。)

最佳答案

你可以使用递归和回调来解决这个问题:

const readline = require('readline');

var n
var players = []

var rl = readline.createInterface(process.stdin, process.stdout);

function readPlayers(playerCount, playerArr, curr = 0) {
if (playerCount == curr) {
rl.close();
return;
}

rl.question("Enter name of player " + (curr + 1) + ": ", function (playerName) {
playerArr.push(playerName)
readPlayers(playerCount, playerArr, curr + 1);
});
}

rl.question("Enter number of players: ", function (answer) {
//Use number of players to generate array of player names

readPlayers(parseInt(answer), players);
});

rl.on('close', function () {
console.log("The players are: " + players.toString());
});

这里rl.close只在满足readPlayers结束递归条件时调用一次。

关于javascript - 输入玩家数量,然后使用数字创建玩家数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51732356/

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