这根本不是科学,我只需要一些java方面的帮助。如果你知道的话,有三个运动方程。
我们将只关注1,即v=u+,现在忘记所有的技术术语。你可以看到有4个变量。
但是,如果我试图在java中计算这个,我将总是要求用户提供u、a和t的值,并提供输出v。但在现实生活中,如果我们有其他变量,我们可以计算这个方程中任何变量的值。
那么,是否有一种方法可以询问所有的输入,并且用户可以选择在4个输入中的一个输入中不输入任何输入,这将被计算出来。
例如:如果我输入2=v,1=u和3=a,当我被问到t的值时,我只需按enter键。我能做些什么来找到空白处吗?
现在我知道有一种方法可以做if循环,但那会很长,我也有点懒。所以我只是想问,有没有一种快速的方法可以做到这一点?
现在我是一个java知识有限的初学者,所以请不要讽刺我,告诉我如果我错了,更可能的是我错在哪里。
谢谢!
只需直接求解其他变量:
v=u+at
u=v-at
a=(v-u)/t
t=(v-u)/a
您想要的是一个方程组求解器系统(使用或不使用Java)。
请参阅https://discursive.atlassian.net/wiki/display/CJCOOK/Solving+a+System+of+Linear+Equations,本文使用Java设置一个表示方程组的矩阵,并使用org.apache.commons.math.Linear.RealMatrix包进行求解。
你可以在谷歌上搜索"线性方程组",了解更多关于这个过程/如何实现自己的过程的信息。
当你让用户从4个方程中选择3个时,他们可以输入3个或更多的值,然后插入矩阵求解器并返回第4个答案。否则,您可以通过关键字来区分输入(谷歌argparse了解如何使用命令行或查看如何在Java中解析命令行参数?)
你可以这样做。。。
import java.util.Scanner;
class motion
{
public static double i(String str)
{
return Double.parseDouble(str);
}
public static void main(String args[])
{
String v1,u1,a1,S1;
double v,u,a,S;
Scanner sc=new Scanner(System.in);
System.out.println("Enter the following values and "?" to find that value");
System.out.print("v=");
v1=sc.next();
System.out.print("u=");
u1=sc.next();
System.out.print("a=");
a1=sc.next();
System.out.print("S=");
S1=sc.next();
if(v1.equals("?"))
{
u=i(u1);
a=i(a1);
S=i(S1);
v=Math.sqrt(((u*u)+2*a*S));
System.out.println("Final velocity="+v+" m/s");
}
else if(u1.equals("?"))
{
v=i(v1);
a=i(a1);
S=i(S1);
u=Math.sqrt((v*v)-2*a*S);
System.out.println("Initial velocity="+u+" m/s");
}
else if(a1.equals("?"))
{
u=i(u1);
v=i(v1);
S=i(S1);
a=((v*v)-(u*u))/2*S;
System.out.println("Acceleration="+a+" m/s^2");
}
else
{
u=i(u1);
v=i(v1);
a=i(a1);
S=((v*v)-(u*u))/2*a;
System.out.println("Displacement="+S+" m");
}
}
}