无限循环不应该发生

时间:2016-03-11 14:00:35

标签: javascript

如果您需要有关该项目或工作示例的更多信息,请询问我!

大家好,
我最近一直致力于一个项目,我用它来学习Javascript 这是一个计算器,但有一件事似乎不起作用。我试图添加一个幂函数,例如6 2 = 36.计算器工作,但我的javascript计算语法有问题。 我举个例子:
如果我单击6,然后单击 2 按钮,则需要添加到计算

Math.pow(6, 2)

我已经启动了一段代码,但它一直陷入循环中,我不知道如何解决这个问题。

function EnterPower2()
{
    var InputValue = document.getElementById("CalcBar").innerHTML;
    var TrueInputValue = document.getElementById("TrueCalcBar").value;
    var stringLength = TrueInputValue.length;
    var lastChar = TrueInputValue.charAt(stringLength - 1);
    var AmountOfNumbers = 1;
    if(lastChar != "*" || lastChar != "+" || lastChar != "-" || lastChar != "/" || lastChar != null)
    {
        RepeatBundle();
    }
    else
    {
        document.getElementById("CalcBar").innerHTML = InputValue + "^2";
        document.getElementById("TrueCalcBar").value = TrueInputValue + "Math.pow(" + lastCharCalculated + ", 2)";
    }
    function RepeatBundle()
    {
        AmountOfNumbers + parseFloat(1);
        var AnotherlastChar = TrueInputValue.charAt(stringLength -AmountOfNumbers);
        TrueInputValue = TrueInputValue.slice(0, -AmountOfNumbers);
        var lastCharCalculated = lastChar + AnotherlastChar;
        if(AnotherlastChar != "*" || AnotherlastChar != "+" || AnotherlastChar != "-" || AnotherlastChar != "/" || AnotherlastChar != '')
            {
                RepeatBundle();
            }
    }   
}

我想要发生的是 如果我输入例如66它执行JS并且它看到有两个数字并且最后一个字符不是加号或空它循环它直到它看到结束所以它做Math.pow(66,2)

此代码保持循环和循环,我不知道如何解决这个问题,请帮助我!感谢

2 个答案:

答案 0 :(得分:1)

您的if条件是无限重复的原因。

在这一行:

if(AnotherlastChar != "*" || AnotherlastChar != "+" || AnotherlastChar != "-" || AnotherlastChar != "/" || AnotherlastChar != '')

你基本上说任何角色都应该重复它。如果它是*,则第二个条件为真,它将重复。如果它是+,则第一个条件为真,它将重复。

您需要重新评估您的条件。 ||是OR运算符,因此如果其中任何一个条件匹配,则if内的代码将运行。您可能需要一些&&(AND)条件。

如果您只想在输入*时重复此操作,请将其更改为:

if(AnotherlastChar != "*") 

如果您希望它重复,而不是您列出的任何数学运算符,请使用&&这样的内容:

if(AnotherlastChar != "*" && AnotherlastChar != "+" && AnotherlastChar != "-" && AnotherlastChar != "/" && AnotherlastChar != '')

答案 1 :(得分:-1)

使用了RepeatBundle()的主要功能.... recurcivaly称为functnion

function EnterPower2()
{
    var InputValue = document.getElementById("CalcBar").innerHTML;
    var TrueInputValue = document.getElementById("TrueCalcBar").value;
    var stringLength = TrueInputValue.length;
    var lastChar = TrueInputValue.charAt(stringLength - 1);
    var AmountOfNumbers = 1;
    if(lastChar != "*" || lastChar != "+" || lastChar != "-" || lastChar != "/" || lastChar != null)
    {
        RepeatBundle();
    }
    else
    {
        document.getElementById("CalcBar").innerHTML = InputValue + "^2";
        document.getElementById("TrueCalcBar").value = TrueInputValue + "Math.pow(" + lastCharCalculated + ", 2)";
    }

} function RepeatBundle()
    {
        AmountOfNumbers + parseFloat(1);
        var AnotherlastChar = TrueInputValue.charAt(stringLength -AmountOfNumbers);
        TrueInputValue = TrueInputValue.slice(0, -AmountOfNumbers);
        var lastCharCalculated = lastChar + AnotherlastChar;
        if(AnotherlastChar != "*" || AnotherlastChar != "+" || AnotherlastChar != "-" || AnotherlastChar != "/" || AnotherlastChar != '')
            {
                RepeatBundle();
            }
    }