有没有一种方法可以通过用户提示输入来解决数学问题

时间:2019-10-02 23:25:24

标签: javascript html

如果用户输入2 + 2,我想要(例如,我的提示是输入计算) document.write(sum); 应该在我的空白页上显示4。我知道如何轻松地通过2个提示来做到这一点,但我正在尝试制作一种计算器。我已经在Google或数学方法上看到了这一点,您可以在其中键入一长串数字和运算符,然后给出步骤,最后给出答案。 我需要一种方法来检索第一个项目,然后第二个项目,然后第三个项目,然后将它们存储在变量中。如果我最终能做到像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时什么也没发生。香港专业教育学院试图寻找整个互联网,但我所看到的是所有的字符串输入或一个数字,然后第二个第二个pprmt。

我希望当用户为document.write键入2 + 2时显示4。然后我最终希望进行减法,除法和乘法。但目前2 + 2什么也没做

2 个答案:

答案 0 :(得分:3)

更好的方法是将计算分为几部分,并遵循BEDMAS规则:

  1. B:首先提取并处理括号中的项目。继续深入嵌套括号,直到没有更多内容为止。
  2. E:接下来处理带有指数的项目。
  3. D:依次处理除法符号两侧的所有项目。
  4. M:依次处理乘法符号两侧的所有项目。
  5. A:依次处理附加符号两侧的所有项目。
  6. S:依次处理减号两侧的所有项目。
  7. 如果在嵌套括号内,请上一层,然后继续执行步骤2。将嵌套括号替换为该backet中的计算结果。
  8. 通过括号的“树”循环重复直到完成。

这是基本计算器的非常全面的概述,只需将所有项目展平,直到获得最终值(假设当然没有变量;)。

这是一种入门方法:

var mathParts =“ 1 + 2-((3 +(2 * 3/3))* 5 ^ 2)/ 6” .match(/ [0-9()^ / * +-] / g) ;

数学零件:(23)[“ 1”,“ +”,“ 2”,“-”,“(”,“(”,“ 3”,“ +”,“(”,“ 2”,“ ”,“ 3”,“ /”,“ 3”,“)”,“)”,“ ”,“ 5”,“ ^”,“ 2”,“)”,“ / “,” 6“]

现在,您要做的就是遍历数组(mathParts),并在每次点击(时增加嵌套级别,并在每次点击)时降低嵌套级别。之后使用多次传递:第一次传递(或循环)处理指数(^),然后在下一次传递中使用/,在下一次传递中使用*,再通过+,然后-

如果仅运行此客户端,并去除所有非数学字符(不允许$ _AtoZ [])并仅允许数学所需的符号,那么它也应足够安全,只需使用{{1进行计算。如果使用正确并且仅由客户端网页上的用户使用,这是安全的,因为这些用户已经可以按F12键,并且可以根据需要入侵该网站;因此,在这种情况下,避免评估是没有意义的。我建议您采用这种方式在eval()范围内运行eval(),以便它在全局级别上运行,而不是在您自己的代码范围内运行(以使私有事物保持私有)。

答案 1 :(得分:2)

https://www.npmjs.com/package/calculator-scripts

节点模块

为什么要在有模块的情况下全部自己编写。您将需要一个节点环境。我可以根据您的经验水平,为您提供一些简单而又困难的方法,让我知道您是否需要帮助。