В настоящее время я пишу программу, которая будет вычислять оставшиеся переменные для простых кинематических уравнений в физике. Мне нужно иметь 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 + a(tf - ti)
Xf = Xi + Vi(tf - ti) + (1/2)a(tf - ti)2
Vf2 - Vi2 = 2a(Xf - Xi)
Есть ли способ сократить это или упростить реализацию? Будет ли как-то работать использование списка массивов?
ArrayList
поможет? - person awksp   schedule 14.05.2014