gpt4 book ai didi

javascript - Node.js For 循环和 Readline 函数调用?

转载 作者:太空宇宙 更新时间:2023-11-04 02:08:55 25 4
gpt4 key购买 nike

我正在尝试输入一系列测试分数并确定 JavaScript 中的平均值,我想我应该尝试一下 Node.js。函数 readTestScores() 利用 readline 的 Question() 方法——来自 Node.js 的 Readline模块用于获取期末考试成绩,内部有一个嵌套的 for 循环,并调用 Question() 来获取七个考试成绩。见下文(是的,我知道,我的代码看起来很乱):

function readTestScores() {
var score = 0;

rl.question('Enter exam score:', (examScore) => {
console.log("Enter test scores: ");
for (var i=0; i < 7; i++) {
rl.question('', (score) => {
test_avg += score;
});
}
rl.close();
});
test_avg /= 7;
}

当我运行代码时,当执行进入 for 循环时,它会跳过所有 Question() 调用直到最后,并且我只能在程序终止之前输入一个值。有什么办法可以纠正这个问题吗?

编辑:这是我用来创建 readline 界面的代码:

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

最佳答案

下面是一些使用 Readline 计算平均值的代码,基于tiny cli 教程:

'use strict';

var aiScores = [];
var iAverage;

function add(a, b) {
return a + b;
}

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

rl.setPrompt('Enter exam score > ');
rl.prompt();

rl.on('line', (line) => {
console.log(line);
if (Number.isInteger(parseFloat(line))) {
aiScores.push(parseFloat(line));
console.log(aiScores);
console.log(parseFloat(line));
iAverage = (aiScores.reduce(add, 0)/aiScores.length);
console.log('Current average = ' + iAverage);
} else {
switch(line.trim()) {
case 'hello':
console.log('world!');
case 'close':
rl.close();
break;
default:
console.log(`Say what? I might have heard '${line.trim()}'`);
break;
}
}
rl.prompt();
}).on('close', () => {
console.log('Have a great day!');
process.exit(0);
});

关于javascript - Node.js For 循环和 Readline 函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43119410/

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