一个求解运动方程的java程序?(没有什么科学性,只是一个java查询)



这根本不是科学,我只需要一些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");
        }
    }
}

相关内容

最新更新