Resolver expressões matemáticas

Olá,

Existe alguma maneira de resolver expressões matemáticas ou eu tenho que resolver isso no braço mesmo.

O usuário do sistema vai poder criar formulas matemáticas nada muito complexas mas com “(” e tal… e sei que isso dá muito trabalho pra resolver a mão.

Existe alguma coisa pronta que resolva o meu problema?

Valeu
Abraço
Marcio

Bom, vc poderia tentar fazer uso de alguma linguagem script que roda sob a JVM como Beanshell.

se o cara digitar

((1 + 3)/ (2 * 3) * (4 - 1)) + 1

vc le como uma string, concatena com algum comando na frente e manda pro Beanshell.

" a = " + “expressao”

Ai é so mandar imprimir o valor de a.

Veja a sessão “Calling BeanShell From Java”
http://www.beanshell.org/manual/embeddedmode.html#Embedding_BeanShell_in_Your_Application

É claro que vc pode fazer também um analisador/parser matemático dos bão usando muita expressão regular, tokens, recursão, algo como um analisador recursivo descendente simples. Em Java Puro. Seria um grande aprendizado.

JFormula 3.6 - Math expressions API is a library for evaluating various mathematical expressions. User can evaluate instantly a string setting variables, adding its own functions or operators.

Se o que queres é fazer cálculo simples e linguagem de script te ajuda, tem o Sleep

Até!.

Olá,

Eu procurava algo do tipo que o Guilherme citou. Parece que o produto é muito bom. Vc usa ele Guilherme? Recomenda?

Sabe me dizer se tem diferença de funcionalidade entre uma licença e outra:

  • JFormula - 1 Site License with Binary
  • JFormula - Personnal License

Quero dizer… será que eu posso adquirir o JFormula - Personnal License para usar em um projeto onde vão trabalhar 2 ou 3 desenvolvedores, mas só 1 deles vai usar o produto?

Valeu
Abraço
Marcio

Leia o resto da licença em:

http://www.japisoft.com/license.html

Editado: Em geral, licenças Personal é para uso realmente pessoal e não para uso comercial.

Até!

Olá,

Pois é Maquiavelbona… vamos ter que abrir a mão e gastar uns Euros…

Valeu pessoal
Abraço
Marcio

Cara, eu nunca usei não. É que eu achei a pergunta interessante e que eu poderia precisar disso algum dia, então resolví procurar e acabei achando o JFormula.

Pelo que eu ví ele me pareceu bem razoável, agora só usando para ter certeza.

Depois não esqueça de contar o que você achou!!!

[ ]s, Guilherme

valeu Guilherme…

eu não vou usar logo… mas qdo usar informo sim como é o jformula.

Abraço Galera

E porque não usar o interpretador do Groovy pra fazer isso?

http://groovy.codehaus.org/Bean+Scripting+Framework

Não vai precisar gastar nem um centavo e faz ainda mais do que simplesmente avaliar expressões matemáticas :stuck_out_tongue:

Pessoal, alôôôô!

Válido no java 1.6

[code]
import javax.script.*;

public class Script {

public Script() {
	
	System.out.println( calcula( "2 + 2 + 2 * 2" ) );
	
}

public Double calcula( String expressao ) {
	
	ScriptEngineManager manager = new ScriptEngineManager();
	ScriptEngine engine = manager.getEngineByName( "JavaScript" );
	
	Object obj = null;
	
	try {
		obj = engine.eval( expressao );
	} catch ( ScriptException exc ) {
	}
	
	return ( Double ) obj;
	
}

public static void main( String[] args ) {
	new Script();
}

}[/code]

uau! Obrigada por esse script, salvou minha pele o.o