Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';无法从txt文件中获取数字的总和_Javascript_Node.js - Fatal编程技术网

Javascript Can';无法从txt文件中获取数字的总和

Javascript Can';无法从txt文件中获取数字的总和,javascript,node.js,Javascript,Node.js,项目: 我正在开发node.js培训模块,其中一个小项目希望我做以下工作: 说明:构建一个名为account.js的节点应用程序,它需要 用户通过命令行输入以注册事务。用户 必须能够输入: 总计-这应该合计银行余额中的所有金额,并向用户显示 存款-这将为银行余额增加一个正金额。不要向用户显示余额 取款-这将给银行余额增加一个负数。不要向用户显示余额 乐透-90%的时间,这应该从用户的余额中减去一个小帐户。另外10%的时间,这应该会增加一个 用户余额中的大量金额 每个事务都应记录在.txt文件

项目:

我正在开发node.js培训模块,其中一个小项目希望我做以下工作:

说明:构建一个名为account.js的节点应用程序,它需要 用户通过命令行输入以注册事务。用户 必须能够输入:

  • 总计-这应该合计银行余额中的所有金额,并向用户显示
  • 存款-这将为银行余额增加一个正金额。不要向用户显示余额
  • 取款-这将给银行余额增加一个负数。不要向用户显示余额
  • 乐透-90%的时间,这应该从用户的余额中减去一个小帐户。另外10%的时间,这应该会增加一个
    用户余额中的大量金额
每个事务都应记录在.txt文件中

提示:考虑制作一系列IF或Switter case语句 确定交易类型和涉及金额

问题:

我无法获取txt文档中所有条目的总和。我使用以下代码将其存入银行:

function deposit() {
   // We will add the value to the bank file.
   fs.appendFileSync("bank.txt", amount);

}
此代码允许我使用终端中的以下行将条目写入bank.txt文件:

node banking.js deposit 300
node banking.js total
插入数字300、500、222后,当我打开txt文件时,数字看起来像
300500222

现在,当我想看到总和时,我创建了total函数,它如下所示:

function total() {

   sum = 0;

   for(let i=0; i < bankAccount.length; i++){
       sum+=bankAccount[i];
   }
   console.log(sum);

}
我的输出将是:

0300500222
如果您注意到它将所有内容像一个字符串一样添加在一起,并在前面添加一个0

我所做的:

我尝试了各种方法,但在stack或在线上找不到太多。我尝试获取实际的文本文件内容并使用split()然后join来查看是否可以将其转换为数组,但没有成功—它只是将每个单独的数字分开,而不是将这些数字作为一个整体。我还尝试使用JSON.stringify,然后进行解析,然后尝试转换,但我经历了一段艰难的时间,结果没有成功

我的要求是:

只是需要一些指导,我将如何做到这一点,一旦我得到了初步存款和总正确的我可以在我自己的项目的其他部分的工作

以下是我目前掌握的全部代码:

var fs = require("fs");
var bankAccount = fs.readFileSync("bank.txt","UTF-8");
let inputString = process.argv;
let action = inputString[2];
let amount = inputString[3];

if(action == "deposit"){
  deposit();
}else if(action == "withdraw"){
   withdraw();
}else if(action == "total"){
   total();
}else if(action == "lotto"){
   lotto();
}else{
   console.log("Please input whether it is a deposit, withdraw, total, or you wanna try the lotto?");
}

function total() {

   sum = 0;   
   for(let i=0; i < bankAccount.length; i++){
       sum+=bankAccount[i];
   }
   console.log(sum); 
}

function deposit() {

   fs.appendFileSync("bank.txt", amount);

}
var fs=require(“fs”);
var bankAccount=fs.readFileSync(“bank.txt”、“UTF-8”);
让inputString=process.argv;
让动作=输入字符串[2];
let amount=输入字符串[3];
如果(动作==“存款”){
存款();
}否则如果(操作==“撤回”){
撤回();
}否则如果(操作=“总计”){
总数();
}else if(动作==“乐透”){
乐透();
}否则{
log(“请输入是存款、取款、合计还是您想试试乐透?”);
}
函数总数(){
总和=0;
for(设i=0;i
您需要使用分隔符来分隔事务。下面是一个使用
空格
作为原始代码分隔符的示例:

var fs = require("fs");
var bankAccount = fs.readFileSync("bank.txt","UTF-8");
let inputString = process.argv;
let action = inputString[2];
let amount = inputString[3];
const DELIMITER = ' ';

if(action == "deposit"){
  deposit();
}else if(action == "withdraw"){
  withdraw();
}else if(action == "total"){
  total();
}else if(action == "lotto"){
  lotto();
}else{
  console.log("Please input whether it is a deposit, withdraw, total, or you wanna try the lotto?");
}

function total() {

  const transactions = bankAccount.split(DELIMITER)

  sum = 0;
  for(let i=0; i < transactions.length; i++){
    sum+= Number(transactions[i]);
  }
  console.log(sum);
}

function deposit() {

  fs.appendFileSync("bank.txt", DELIMITER + amount);

}
var fs=require(“fs”);
var bankAccount=fs.readFileSync(“bank.txt”、“UTF-8”);
让inputString=process.argv;
让动作=输入字符串[2];
let amount=输入字符串[3];
常量分隔符=“”;
如果(动作==“存款”){
存款();
}否则如果(操作==“撤回”){
撤回();
}否则如果(操作=“总计”){
总数();
}else if(动作==“乐透”){
乐透();
}否则{
log(“请输入是存款、取款、合计还是您想试试乐透?”);
}
函数总数(){
const transactions=bankAccount.split(分隔符)
总和=0;
for(设i=0;i
读取文件时,会得到一个
字符串。带有
字符串的
+
运算符对应于串联,而不是求和。因此,您需要将从文件中获得的
字符串转换为
int
var bankAccount=parseInt(fs.readFileSync(“bank.txt”,“UTF-8”)嗯,您需要做的第一件事是在文本文件中添加某种分隔符,以便您知道第一笔存款的结束位置和第二笔存款的开始位置。然后你可以
split
。一个更好的选择是使用JSON存储事务,只需
require
it即可。Life saver很有意义,我一点也不懂我试了几个小时谢谢!