使用插入解析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
  • 我为解决此问题所做的工作:

    如果我还没有说过这一点,我是用Java写的。(请注意:我正在尝试为这里创建一个MVC。也请参阅完整代码,开始)

    问题:

    如果所有术语都存在,则此代码有效。意思是
    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){
    
                }