目标是创建一个程序,该程序采用二次方程形式的二次方程并求解。除了StringTokenizer之外,还有其他方法可以实现吗?或者是否有可能在StringTokenizer中仅分离出^ 2,而不是像现在这样在^和2中分离出来?我意识到,使用我写的方式,它不会允许方程使用2。将二次方程解析为命令行输入
这个问题要求我不要采取个别系数,而是整个方程本身。
样品运行:“java SolveEquation21.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");
}
}
}
您是否必须使用此输入格式?如果您在单独扫描中收集系数,将会更容易IMO – ControlAltDel 2015-02-11 16:10:39
您可以将整个公式作为字符串,然后使用任何+/-符号分割字符串。参见javadoc中的String.split(regex)''。另外,如@ControlAltDel所建议的,分开扫描(即nextDouble,nextFloat等),除非您有这样的要求。 – ha9u63ar 2015-02-11 16:12:45
与您的问题没有直接关系,但如果判别式为负,该怎么办?而如果a1是0呢?考虑处理这些。 – 2015-02-11 16:12:59