Resolver expressões matemáticas

11 respostas
M

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

11 Respostas

peczenyj

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.

guilherme.chapiewski

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.

maquiavelbona

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

Até!.

M

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

maquiavelbona

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

M

Olá,

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

Valeu pessoal
Abraço
Marcio

guilherme.chapiewski

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

M

valeu Guilherme…

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

Abraço Galera

Mauricio_Linhares

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:

davidbuzatto

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

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

Criado 15 de fevereiro de 2007
Ultima resposta 9 de jul. de 2010
Respostas 11
Participantes 7