我可以对我的代码做些什么不要删除数组中的 0?

what can I do to my code don´t delete a 0 in a array?

我正在尝试用 Haxe 制作一个计算器,它快完成了但是有一个错误。每当等式的某些部分结果为 0 时,该错误就会发生。

这就是我连接数字并放入数组编号的方式,cn 是用于接收数字并转换为数字的变量,ci 是一个 specific counter 使 while 运行良好,c 是基本计数器,在用于读取数组(输入)项时增加到背景:

            var cn  = '';
            var ci = c;

            if (input[c] == '-') {
                number.push('+');
                cn = '-';
                ci ++;
            }

            while (input[ci] == '0' || input[ci] == '1' || input[ci] == '2' || input[ci] == '3' || input[ci] == '4' || input[ci] == '5' || input[ci] == '6' || input[ci] == '7' || input[ci] == '8' || input[ci] == '9' || input[ci] == '.') {

                if(ci == input.length) {
                    break;
                }

                cn += input[ci];
                ci++;
            }

            number.push(cn);
            c += cn.length;

这是计算加减法的部分代码

    for (i in 0 ... number.length) { trace(number); if (number[c] == '+') { number[c-1] = ''+(Std.parseFloat(number[c-1])+Std.parseFloat(number[c+1])); number.remove(number[c+1]); number.remove(number[c]); }

            else {
                c++;
            }
        }

示例: 12+13-25+1:当我的代码读取这个输入时,它转换成一个数组([1,2,+,1,3,-,2,5,+,1]),然后代码连接数字([12,+,13,-,25,+,1]) 最后,它寻找运算符(+、-、* 和 /)来进行运算(例如:12+13),用“12”代替对于操作 (25) 的结果并删除“+”和“13”。这部分运行良好,然后代码执行 25-25=0.

问题从这里开始,因为等式变为 0+1,当代码处理时,repend 是 0 消失,1 被删除,当预期为“1”时输出为“+”。

在这种情况下删除使用 indexOf 并不理想,建议改用 splice。

number.splice(c,1);
number.splice(c,1);

https://try.haxe.org/#D3E38