将二次方程解析为命令行输入

时间:2015-02-11 16:03:51

标签: java command-line-arguments command-line-parsing

目标是创建一个程序,采用二次方形的二次方程并求解。除了StringTokenizer之外,还有不同的方法吗?或者是否可以在StringTokenizer中仅隔离^ 2而不是像现在这样在^和2中隔离?我意识到使用我编写它的方式,它将不允许方程式使用2。

这个问题要求我不要采用单个系数,而是采用整个方程本身。

样品运行:“javaSolveEquation21.5625x∧2+ 2.5x + 1 = 0”。对于此输入,输出应为:“x = -0.8”

import java.util.Scanner;
import java.util.StringTokenizer;
class SolveEquation2 {
    public static void main(String args[]){
        Scanner scan = new Scanner(System.in);
        System.out.print("Input a quadratic");
        String equation = scan.nextLine();

        StringTokenizer st = new StringTokenizer(equation, "x^2+-");



        String a,b,c;

        a = st.nextToken();
        b = st.nextToken();
        c = st.nextToken();

        double a1 = Double.parseDouble(a);
        double b1 = Double.parseDouble(b);
        double c1 = Double.parseDouble(c);


        double x = (b1 * b1) - (4 * a1 * c1);

        double var1 = (-b1 + Math.sqrt(x)) / (2*a1);
        double var2 = (-b1 - Math.sqrt(x)) / (2*a1);

        if (x == 0){
            System.out.println("x = " + var1);

        }
        if (x > 0){
            System.out.println("x1 = " + var1);
            System.out.println("x2 = " + var2);
        }
        if (x < 0){
            System.out.println("No Solution");


    }
    }
}

1 个答案:

答案 0 :(得分:2)

您希望使用正则表达式来解析命令行输入。 看来你之前想要做的事已多次完成。

See here