使用插入解析java因素列表
非常长但必要的介绍: 现在,我正在写一个合成除法计算器。要做到这一点,有几个步骤(对于计算机来说)。 我已经完成了第一步使用插入解析java因素列表,java,math,Java,Math,非常长但必要的介绍: 现在,我正在写一个合成除法计算器。要做到这一点,有几个步骤(对于计算机来说)。 我已经完成了第一步 输入必须(比如说3x^2+2x^1+3x^0)解析为每个术语的片段(比如3x^2,2x^1,等等) 接下来,必须将每个因子添加到数组或带有度元素的数组列表中。如果您熟悉合成除法,您就知道这些因子必须按照它们匹配的程度排序(3x^2+2x^1+0x^1必须作为3,2,0)。此外,如果缺少某个度数,则应将数字0添加到位。例如,如果输入是代码>3x^ 2 +2x^ 0 < /代码>
3x^2+2x^1+3x^0
)解析为每个术语的片段(比如3x^2
,2x^1
,等等)3x^2+2x^1+0x^1
必须作为3,2,0
)。此外,如果缺少某个度数,则应将数字0添加到位。例如,如果输入是代码>3x^ 2 +2x^ 0 < /代码>,则必须在中间添加零,因为缺少1度的项。输出将是3,0,2
3x^2+1x^1+0x^0
(有一个级别为2、1和0的术语)
如果它们不正常,它会做一些完全疯狂的事情
如果缺少一个,并且它们是有序的,那么它将输入零,但忽略前导项
代码有什么问题?我几乎可以肯定这是一个语义错误。我再次尝试提供一个MVC。但是,如果这还不够,可以看到完整的代码
感谢您在高级中提供的帮助问题1:订购
您正在解析第一个术语中的度,然后使用度循环遍历这些术语。如果你把第二学位放在第一位,那么它只会处理两个学期
您可以通过先按学位对术语进行排序来解决此问题
问题2:术语更少
这是由学位相关问题引起的,但更糟的是:
coefficients.add(getCoeffFromString(arr[i]));
}
catch (Exception e){
}
你在吃特例。如果您有两个术语,但其中一个有三级,那么在索引i处取消对列表的引用将抛出一个越界异常。使用split()进行大量文本处理。是否尝试调试放入数组中的术语?是的,术语都已正确拆分@约翰斯卡特食品
coefficients.add(getCoeffFromString(arr[i]));
}
catch (Exception e){
}