Quantcast
Channel: Tópicos
Viewing all articles
Browse latest Browse all 11336

Avaliar expressões matemáticas

$
0
0
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?

Viewing all articles
Browse latest Browse all 11336

Trending Articles