我正在进行初学者级编程挑战。我理解算法部分,但我不明白它是如何输入的。
我知道它需要输入三行。有一些预编写的代码将输入放入"输入"变量。我该如何处理这个"输入"变量来获取各行中的数据?
输入第1行:订购的商品数量,安娜没有吃的商品的索引
输入第2行:每件商品的价格
输入第3行:安娜的费用
示例输入:
4 1
3 10 2 9
12
预期输出:5
这是我的代码搞砸了,我正在努力解决这个问题:
function processData(input) {
var input_temp = input.split("\n");
var allergyIndex = input_temp[0][1];
var array = input_temp[1].split(" ");
var annaCharged = input_temp[2];
var annaMealsCost = 0;
for (var i = 0; i < array.length; i++){
if (i !== allergyIndex){
annaMealsCost += array[i];
}
}
if (annaMealsCost / 2 === annaCharged){
console.log("Bon Appetit");
} else {
console.log(annaCharged - annaMealsCost / 2);
} }
// below is the code that is pre-written, which I don't understand at all:
process.stdin.resume(); process.stdin.setEncoding("ascii");
_input = ""; process.stdin.on("data", function (input) {
_input += input; });
process.stdin.on("end", function () { processData(_input); });
答案 0 :(得分:0)
当程序运行时,它将监听要输入的数据,直到EOF
个字符。此时,将调用processData
,直到该点输入所有行。
如果您正常运行程序(node my-program.js
),它将等待输入。您可以输入数据,最后通过手动输入process.stdin
来触发end
Cmd + D
事件,该EOF
将被解释为process.stdout
个字符。
另一种选择是输入输入,就像输入文本文件一样。
默认情况下,打印文件将转到process.stdin
。但您可以使用竖线字符(|
)将打印重定向到4 1
3 10 2 9
12
。
<强> input.txt中强>
cat input.txt | node my-program.js
终端提示
cat input.txt
命令node my-program.js
的输出将用作IGNORE
的输入。