GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Resolver expressões matemáticas


#1

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


#2

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.


#3

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.


#4

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

Até!.


#5

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


#6

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é!


#7

Olá,

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

Valeu pessoal
Abraço
Marcio


#8

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


#9

valeu Guilherme...

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

Abraço Galera


#10

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:


#11

Pessoal, alôôôô!

Válido no java 1.6

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();
    }
}

#12

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


#13