public boolean checkOperator(String expression) {
if (expression.equals(getMem1Name()) || expression.equals(getMem2Name()))
return true;
String operator = expression.substring(0,expression.indexOf("("));
if (!operator.equals("+") && (!operator.equals("-") && !operator.equals("*") &&
!operator.equals("/") && !operator.equals("log") && !operator.equals("exp") &&
!operator.equals("sin") && !operator.equals("cos") && !operator.equals("abs") &&
!operator.equals("ceil") && !operator.equals("round") && !operator.equals("floor")))
return false;
else
return true;
}
E se tiveres algo assim: 1+2+sin(...), o teu operator não está apto a ver isso. O teu if nunca vai encontrar uma correspondência valida e vai entrar na condição e retornar false.
Visto assim por alto e não correndo nem fazendo o debug, dá a entender que o é esse o erro.
P.S
public boolean checkValidExpression(String expression) {
int countPar = 0;
int i = 0;
while (i<expression.length()) {
if (expression.substring(i,i+1).equals("(")) {
countPar++;
i++;
}
else if (expression.substring(i,i+1).equals(")")) {
countPar--;
i++;
}
else
i++;
}
if (countPar!=0)
return false;
else
return true;
}
Continuando o problema de cima, aqui tens o mesmo problema. Não podes ter 1+1? Se a expressão entrar como parâmetro método retornas false porque?
↧