我制作了一個功能齊全的方法,可以為方程獲取一個變數字串,如x或var ,如下所示:
// Equation Variable Getter
public String getVar(){
String variable = "";
for (int i = 0; i < getEquation().length(); i ){
if ((getEquation().charAt(i) >= 65 && getEquation().charAt(i) <= 90)
|| (getEquation().charAt(i) >= 97 && getEquation().charAt(i) <= 122)){
variable = getEquation().charAt(i);
}
}
//System.out.println(variable);
return variable;
}
在嘗試求解像x = x或num = num這樣的方程時,我將邊分割成一個陣列,并像我測驗過的任何其他方程一樣修剪空格。問題在于比較雙方。自然地,我使用了 if 陳述句并像這樣比較它們:
if (sides[0].contains(getVar()) && sides[1].contains(getVar()){
// statements used to solve equation format co*var = co*var
}
在x = x和var = var上使用它時,if 陳述句永遠不會運行。經過進一步調查,我發現代碼確實繞過了它,因為陳述句中的兩個條件都是錯誤的。這不應該發生,因為對于像x = x和var = var這樣的字串,它們都包含變數x
if 陳述句有問題嗎?
uj5u.com熱心網友回復:
首先,我需要感謝那些幫助找到解決這個問題的人。顯然,事實上,getVar() 方法從具有多個變數實體的方程字串中獲取雙變數存在問題。
我為解決這個問題所做的就是多載 getVar() 方法來接收和使用字串引數,這樣我就可以從等式的一側獲取變數。
包含 if 陳述句的 solve() 方法用于求解兩邊都有1 個或多個變數的方程。因此,在只有一側包含變數的情況下,兩個 getVar() 方法仍將用于避免IndexOutOfBoundsException。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/471631.html