我可以对我的代码做些什么不要删除数组中的 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);
我正在尝试用 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);