我正在尝试用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”时输出为“ +”。 >
答案 0 :(得分:1)