Java 根据用户输入计算运动学方程(较短的方法?)

Java 根据用户输入计算运动学方程(较短的方法?),java,algorithm,physics,kinematics,Java,Algorithm,Physics,Kinematics,我目前正在编写一个程序,将计算物理学中简单运动方程的剩余变量。我需要有4/6个变量,然后我可以计算其他两个变量的结果。目前,我正在使用一个布尔类型的数组来检测是否输入了变量,我必须比较每种情况,并重新编写三个公式中的一个来求解该变量。这最终导致了大量荒谬的臃肿代码 下面是我的代码中一个等式的示例: if(variableEntered[1] == false && variableEntered[3] == false) { // calculate final ve

我目前正在编写一个程序,将计算物理学中简单运动方程的剩余变量。我需要有4/6个变量,然后我可以计算其他两个变量的结果。目前,我正在使用一个布尔类型的数组来检测是否输入了变量,我必须比较每种情况,并重新编写三个公式中的一个来求解该变量。这最终导致了大量荒谬的臃肿代码

下面是我的代码中一个等式的示例:



    if(variableEntered[1] == false && variableEntered[3] == false) {
        // calculate final velocity
       double fvNumber = getInitialVelocity() + (getAcceleration() * (getFinalTime() - getInitialTime())); 
       setFinalVelocity(fvNumber);
       // calculate final position
       double fpNumber = (getInitialPosition() + (getInitialVelocity() * (getFinalTime() - getInitialTime())) + 
           ((0.5 * getAcceleration()) * ((getFinalTime() - getInitialTime()) * (getFinalTime() - getInitialTime()))));
       setFinalPosition(fpNumber);
       System.out.printf("The final velocity is: %.2f m/s.", getFinalVelocity());
       System.out.println();
       System.out.printf("The final position is: %.2f meters.", getFinalPosition());
       System.out.println(); 
       }

 
我使用的三个方程式是: Vf=Vi+atf-ti XF=席+VITF—Ti+1/2ATF—Ti2 VF2-VI2= 2AXF-席

有没有办法缩短这个时间或使它更容易实现?使用数组列表会有什么效果吗

使用BigDecimal可避免精度损失和由此导致的错误答案。 您可以将每个公式分解为自己的方法,并一步一步地完成每个部分。括号越多,阅读起来就越困难。 例如 deltaT=tf-ti; vf=vi+a*deltaT

如果使用BigDecimal、String或诸如Double之类的包装类型,则可以检查null而不是保留布尔数组


您可以将其视为6个变量中的3个方程。在每个步骤中计算完整的梯度/导数,并使用自由变量的偏导数执行牛顿步骤以达到一致状态。

为什么您认为ArrayList会有所帮助?