我该怎么做,我的代码不删除数组中的0?

时间:2019-07-14 00:44:59

标签: haxe

我正在尝试用Haxe制作一个计算器,它几乎完成了,但是有一个错误。每当方程的某些部分为0时,都会发生bug。

这是我将数字连接起来并放入数组数字的方式,cn是用于接收数字并转换为数字的变量,ci是使计数器正常工作的特定计数器,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,并且在代码处理过程中,所代表的是0消失而1被删除,而期望值为“ 1”时输出为“ +”。 >

1 个答案:

答案 0 :(得分:1)

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

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

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