目標是創建一個程序,該程序採用二次方程形式的二次方程並求解。除了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