【问题标题】:My if statment and else if statment is not getting executed, but there is not error我的 if 语句和 else if 语句没有被执行,但没有错误
【发布时间】:2020-06-29 06:05:13
【问题描述】:

所以我正在写一个计算器,我在等号上苦苦挣扎,我正在尝试做一些简单的床(没有括号也没有指数),但我的代码一直返回 0,就好像 if 语句正在发生一样完全跳过

我不知道是什么原因造成的,因为我没有收到任何错误

function equal(){
        let exp = document.form.textview.value;
        let expArray = exp.split(/\b/);
        console.log(expArray);   //<-if something doesn't work check this
        let total = 0;
        var lastOperator = "+";
        var lastDig = 0;
        for(let i = 0 ; i < expArray.length; i++){
          var dig = expArray[i].trim(); //value of "i", the item currently in the loop
          if(isNaN(dig) == true){
             console.log("string")
           }
          else if(isNaN(dig) == false){
            console.log('not string');
              if (dig == "/"){ //this whole section gets skipped :(
                var a = i + 1;
                var p = i - 1;
                var aDig = parseFloat(expArray[a].trim); //value after "i"
                var bDig = parseFloat(expArray[p].trim); // value before  "i"
                var sDig = aDig / bDig;
                total = expArray.splice(bDig, 3, sDig);
              }

              else if ( dig == "*"){
                var a = i + 1;
                var p = i - 1;
                var aDig = parseFloat(expArray[a].trim); //value after "i"
                var bDig = parseFloat(expArray[p].trim) // value before  "i"
                var sDig = aDig * bDig;
                total = expArray.splice(bDig, 3, sDig);
              }
              else if ( dig == "+"){
                var a = i + 1;
                var p = i - 1;
                var aDig = parseFloat(expArray[a].trim); //value after "i"
                var bDig = parseFloat(expArray[p].trim)// value before  "i"
                var sDig = aDig + bDig;
                total = expArray.splice(bDig, 3, sDig);
                console.log(expArray.splice(bDig, 3, sDig));
              }
              else if( dig == "-"){
                var a = i + 1;
                var p = i - 1;
                var aDig = parseFloat(expArray[a].trim); //value after "i"
                var bDig = parseFloat(expArray[p].trim) // value before  "i"
                var sDig = aDig - bDig;
                total = expArray.splice(bDig, 3, sDig);
            }
          }

            }
            document.form.textview.value = total;

        } ```

【问题讨论】:

  • not string 文本是否出现在您的控制台中?如果是,请将dig 变量登录到控制台并检查其中存储的内容。
  • isNaN() 检查该值是否不是您正确记录的数字。然而,感觉好像你用错了,因为你确保它是一个数字,然后将它与字符串进行比较。您应该将子 if 移动到 console.log("string") 部分。

标签: javascript for-loop if-statement calculator calculation


【解决方案1】:

我不确定您到底想在这里做什么。 isNan(numberContent) 将返回 false & isNan(stringContent) 将返回 true。 你用错了。 第一个 if 应该是 isNaN(dig) == false 和第二个 isNaN(dig) == true


        let exp = "1/1*3";
        let expArray = exp.split(/\b/);
        console.log(expArray);   //if something doesn't work check this
        var previousValue= parseFloat(expArray[0].trim().toString());
        for(let i = 1 ; i < expArray.length; i++){
        var dig = expArray[i].trim(); //value of "i", the item currently in the loop
          if(isNaN(dig) == false){
             console.log("string")
           }
          else if(isNaN(dig) == true){
            console.log("not string");
            
              var a = i + 1;
              var aDig = previousValue
              var bDig =  parseFloat(expArray[a].trim().toString()); //value after "i"; // value before  "i"
              if (dig == "/"){ //this whole section gets skipped :(
                var sDig = aDig / bDig;
              }

              else if ( dig == "*"){
                var sDig = aDig * bDig;
              }
              else if ( dig == "+"){
                var sDig = aDig + bDig;
                
              }
              else if( dig == "-"){
                var sDig = aDig - bDig;
            }
            previousValue = sDig;
            i++
          }

            }
       alert(previousValue);

        ```

【讨论】:

  • isNan(string) will return true 请注意,这是不正确的,我不是指错字。
  • 为什么不正确?我的意思是 isNaN ("string") 将返回 true
  • 将数据类型为string 的值传递给isNaN() 不一定会返回true。例如“1”、“2”、“”、“”、“-1”。
  • 是的。我的意思是字符串,内容是字符串。
最近更新 更多