1

这根本不是科学,我只需要一些关于 java 的帮助。所以如果你知道,有 3 个运动方程。

我们将只关注 1,即 v=u+at 现在忘记所有技术术语。你可以看到有4个变量。

但是如果我尝试在 java 中计算这个值,我将始终要求用户提供 u、a 和 t 的值并提供输出 v。但在现实生活中,我们可以计算任何变量的值如果我们有其他方程,这个方程。

那么,有没有一种方法可以询问所有输入,并且用户可以选择在 4 个输入中的一个输入中不输入任何输入,并且将进行计算。

例如:如果我输入 2=v,1=u 和 3=a,当我被问到 t 的值时,我只需按 Enter。我可以做些什么来找到空白空间吗?

现在我知道有一种方法可以执行 if 循环,但这会很长,而且我也有点懒惰。所以我只是问有没有一种快速的方法可以做到这一点?

现在我是一个对java知识有限的初学者,所以请不要讽刺并告诉我我是否错了,更有可能我错在哪里。

谢谢!

4

3 回答 3

3

直接求解其他变量:

v=u+at
u=v-at
a=(v-u)/t
t=(v-u)/a
于 2012-07-30T17:11:04.570 回答
1

你想要的是一个方程组求解器(有或没有 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 个答案。否则,您可以按关键字区分输入(google argparse 了解如何使用命令行执行此操作或查看How to parse command line arguments in Java?

于 2012-07-30T17:07:13.443 回答
0

你可以这样做...

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");
        }
    }
}
于 2020-05-01T10:49:49.470 回答