0

私はJavaScriptの初心者です。

このコードは、接尾辞式を評価することになっています。しかし、それは機能しません。コードは非常に論理的で、何が問題なのかよくわかりません。

誰かが私を助けてくれるなら、私は感謝するでしょう!

<html>
<head>
</head>

<body>
<!-- starting javaScript -->
<script type = "text/javascript">
    var postStr = "123++"; //initial postfix expression     
    var postArr =  new Array();
    postArr = postStr.split(""); //string.split() turns string into array!

    for(var i=0; i<postArr.length; i++)
        document.write("value"+postArr[i]+"<br>");

    var stack=[];
    var result;
    var firstNum;
    var secNum;
    //var k;
    for(var i=0; i<postArr.length; i++)
    {
        if((postArr[i]!="^")||(postArr[i]!= "+")||(postArr[i]!= "-")||      (postArr[i]!= "*")||(postArr[i]!= "/"))
        {
            stack.push(postArr[i]);
            //document.write("length" + stack.length);
        }

        else if((postArr[i]=="^")||(postArr[i]== "+")||(postArr[i]== "-")||(postArr[i]== "*")||(postArr[i]== "/"))
        { 
            if(postArr[i]=='+')
            {
                firstNum=stack.pop();
                secNum=stack.pop();
                result = secNum + firstNum;
                stack.push("result = " + result);
            }
            else if(postArr[i]=='*')
            {
                firstNum=stack.pop();
                secNum=stack.pop();
                result = secNum * firstNum;
                stack.push("result = " + result);
            }
            else if(postArr[i]=='/')
            {
                firstNum=stack.pop();
                secNum=stack.pop();
                result = secNum / firstNum;
                stack.push("result = " + result);
            }
            else if(postArr[i]=='-')
            {
                firstNum=stack.pop();
                secNum=stack.pop();                                        
                                    result = secNum - firstNum;
                stack.push("result = " + result);
            } 
        }
    }
    var finalRes=stack.pop();
    document.write(finalRes); 
</script>
</body>
</html>
4

2 に答える 2

3

いくつかのエラーがあります:

  1. 負の条件を使用しているため、最初の条件はand&&)演算子で区切る必要がありますor

  2. 文字列を数値に変換するので、文字を整数に変換することを忘れないでください(のようなもので+postArr[i]

  3. コメント付きの文字列ではなく、結果をプッシュする必要があります(stack.push(result)ではありませんstack.push("result = " + result))。

このjsfiddleを参照してください:http://jsfiddle.net/scaillerie/GwDTM/2/

于 2012-12-17T16:50:48.573 に答える
1

それが唯一の問題であるかどうかはわかりませんが、このコードの条件は次のとおりです。

if((postArr[i]!="^")||(postArr[i]!= "+")||(postArr[i]!= "-")|| (postArr[i]!= "*")|| postArr[i]!= "/"))

postArr [i]は常にオプションの1つではないため、常にtrueに評価されます。あなたはおそらく次のようなものが欲しいでしょう:

var ch = postArr[i];

if (! ((ch == "^") || (ch == "+") || (ch == "-")…

于 2012-12-17T16:43:35.193 に答える