检查两个表达式字符串是否都包含变量
Checking for Whether Both Expression Strings Contain the Variable
我已经制作了一个功能齐全的方法,可以为等式获取像 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语句有问题吗?
首先,我要感谢协助找到此问题解决方案的人员。显然,事实上,getVar() 方法从具有多个变量实例的等式字符串中获取双变量存在一个问题。
我为解决该问题所做的工作是重载 getVar() 方法以接收和使用字符串参数,这样我就可以仅从等式的一侧获取变量。
包含 if 语句的 solve() 方法用于求解两边有 1 或更多变量的方程。因此,在只有一侧包含变量的情况下,两个 getVar() 方法仍将用于避免 IndexOutOfBoundsException.
我已经制作了一个功能齐全的方法,可以为等式获取像 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语句有问题吗?
首先,我要感谢协助找到此问题解决方案的人员。显然,事实上,getVar() 方法从具有多个变量实例的等式字符串中获取双变量存在一个问题。
我为解决该问题所做的工作是重载 getVar() 方法以接收和使用字符串参数,这样我就可以仅从等式的一侧获取变量。
包含 if 语句的 solve() 方法用于求解两边有 1 或更多变量的方程。因此,在只有一侧包含变量的情况下,两个 getVar() 方法仍将用于避免 IndexOutOfBoundsException.