簡體   English   中英

求解運動方程的java程序? (沒有科學只是一個java查詢)

[英]a java program to solve equations of motion? (nothing scientific just a java query)

這根本不是科學,我只需要一些 java 方面的幫助。 所以如果你知道,有 3 個運動方程。

我們只關注 1,即 v=u+ 現在忘記所有技術術語。 你可以看到有 4 個變量。

但是如果我嘗試在 Java 中計算它,我將總是需要用戶提供 u、a 和 t 的值並提供輸出 v。但在現實生活中,我們可以計算任何變量的值這個等式如果我們有其他的。

那么,有沒有一種方法可以詢問所有輸入,並且用戶可以選擇在 4 個輸入之一中不輸入任何輸入,這將被計算。

示例:如果我輸入 2=v,1=u 和 3=a,當我被問到 t 的值時,我只需按回車鍵。 我可以做些什么來找到空白區域嗎?

現在我知道有一種方法可以執行 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");
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM