Javascript 有没有办法通过用户提示输入来解决数学问题

Javascript 有没有办法通过用户提示输入来解决数学问题,javascript,html,Javascript,Html,如果用户输入2+2,我希望(例如,我的提示是输入计算) 文件。填写(金额); 应该在我的空白页上显示4。我知道如何通过两个提示轻松完成这项工作,但我正在尝试制作一种计算器。我在google或math way上看到过,你可以输入长串数字和运算符,然后给出步骤和最终答案。 我需要一种方法来检索第一项、第二项、第三项,然后将它们存储在变量中。如果我最终能做到像22+22那样,那就太好了,但我不确定那会怎样。 userInput.includes(“+”)可能足够好了,因为它们没有其他时间了 //if

如果用户输入2+2,我希望(例如,我的提示是输入计算) 文件。填写(金额); 应该在我的空白页上显示4。我知道如何通过两个提示轻松完成这项工作,但我正在尝试制作一种计算器。我在google或math way上看到过,你可以输入长串数字和运算符,然后给出步骤和最终答案。 我需要一种方法来检索第一项、第二项、第三项,然后将它们存储在变量中。如果我最终能做到像22+22那样,那就太好了,但我不确定那会怎样。 userInput.includes(“+”)可能足够好了,因为它们没有其他时间了

//if (userInput.includes(allNumbers && "+")){
     // value1 = userInput.split("").map(parseInt).filter(i =>!isNaN(i))[0]
        //value2 = parseint(userInput);
       // sum = value1 + value1;

        //document.write(sum);

   //}
我已经试过了,但是当我输入2+2时,什么都没有发生。我试着在互联网上查找,但我看到的都是字符串输入或1个数字,然后是第2个数字的第2个prmpt


我预计当用户为document.write键入2+2以显示4时。然后我最终想做减法、除法和乘法。但目前2+2没有任何作用

更好的方法是将计算分成几个部分,并遵循贝德马斯规则:

  • B:首先提取和处理括号中的项目。继续向下进入嵌套的括号,直到没有更多
  • E:下一步用指数处理项目
  • D:依次处理分割符号两侧的所有项目
  • M:依次处理乘法符号两侧的所有项目
  • A:依次处理添加符号两侧的所有项目
  • S:依次处理减法符号两侧的所有项目
  • 如果在嵌套的括号内,则上升一级并继续执行步骤2。用该背景内的计算结果替换嵌套括号
  • 在括号中的“树”中循环重复,直到完成为止
  • 这是对基本计算器的一个非常全面的概述,只需将所有项展平,直到得到最终值(当然,假设没有变量;)

    以下是一个开始的方法:

    var mathParts=“1+2-((3+(2*3/3))*5^2)/6”。匹配(/[0-9()^/*+-]/g)

    数学部分:(23)[“1”、“+”、“2”、“-”、“(”、“(”、“3”、“+”、“(”、“2”、“、”3”、“/”、“3”、“”、”、“、”5”、“^”、“2”、“/”、“6”]

    现在,您所要做的就是迭代数组(
    mathParts
    )并在每次点击
    并在每次点击
    时降低嵌套级别)
    。然后使用多个过程:第一个过程(或循环)处理指数(
    ^
    ),然后在下一个过程中处理
    /
    ,然后在下一个过程中处理
    *
    ,然后处理
    +
    ,然后处理
    -

    如果您只运行此客户端,并去掉所有非数学字符(不允许使用$AtoZ[]),只允许数学所需的符号,那么使用
    eval()
    进行计算也应该足够安全。它是安全的,如果使用正确,只有用户的网页在客户端,因为这些相同的用户已经可以按F12和黑客的网站,如果他们想;因此,在这种情况下,防范eval是毫无意义的。我建议您在
    新函数(“eval()”
    范围内运行
    eval()
    ,使其在全局级别运行,而不是在您自己的代码范围内运行(以保持私有内容的私有性)。

    节点模块


    既然有一个模块,为什么还要自己写呢。您将需要一个节点环境。我可以根据您的经验水平为您提供一些简单到困难的构建方法,如果您在这方面需要帮助,请告诉我。

    的可能副本也可能是一个有趣的读物。node的所有这些功能都内置于fyihow?我找不到如何记录。将用户输入的内容写入var userInput=prompt(“请输入您的数学问题:,”);然后解决它这是完美的,但我不知道如何使它工作,接缝真的很复杂。现在在课堂上,我到家后可以试试。我不知道如何做这类事情ug.const amountOfVariables=userInput.split(“”).map(parseInt).filter(I=>!isNaN(I))[0]这在我的程序中很早就用于查找字符串中的第一个数字,使其成为一个数字,然后我用它打印出变量的数量。但是现在我想要2个数字和一个符号,从输入提示符中我找到了这个,但是我不确定演示是如何工作的
    if(userInput.includes(“+”){sum=math.eval(userInput)document.write(sum);}
    我觉得我很接近了,我怎么能发布给大家使用呢。我只需要导入一个库。方便用户输入。所以很少的代码,你将不得不建立一个后端或使用一个模拟的。你可能想看看Wix。他们有一个内置的节点后端,他们有很多内置的模块。还有什么可以回答我的问题吗reopened@tmanrocks999我没有权力,我想你必须有2000名代表才能这么做。再问一次:)尽量说得更具体些。无论是谁投票关闭了它,都是因为“不清楚你在问什么”的欢呼声