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