Eu não conhecia este livro, mas vou procurar. Eu estava com preguiça de desenvolver esta solução e pensei que uma coisa tão prática já deveria ter uma solução open source.
O Jasper Reports implementa uma funcionalidade assim. A gente pode definir uma expressão matemática utilizando os FIELDs e PARAMETERs para imprimir no relatório (se bem que isso deve existir em qualquer ferramenta de relatório). Mas eu não tive paciência ainda pra catar isso no código fonte. Amanhã eu faço isso…
Eu não conhecia este livro, mas vou procurar. Eu estava com preguiça de desenvolver esta solução e pensei que uma coisa tão prática já deveria ter uma solução open source.
O Jasper Reports implementa uma funcionalidade assim. A gente pode definir uma expressão matemática utilizando os FIELDs e PARAMETERs para imprimir no relatório (se bem que isso deve existir em qualquer ferramenta de relatório). Mas eu não tive paciência ainda pra catar isso no código fonte. Amanhã eu faço isso…
As linguagens de scripts (parece que a poeira baixou um pouco), como Groovy, devem fazer isso com o peh-nas-costas. Procure por “eval” ou termos relacionados.
No developerWorks da IBM tem inclusive uma serie de artigos sobre essas linguagens (alt.lang.jre).
[quote=MisterX]Maeu caro vc pode me dizer como vc conseguiu usar esta API, pois estou tentando asim e da erro dizendo que não reconhece o contrutor MathEvalutor:
[/quote]
Olá,
O nome da sua classe é MathEvaluator também, assim java acaba achando que você quer instanciar sua própria classe MathEvaluator.
Use:
com.primalworld.math.MathEvaluator m = new com.primalworld.math.MathEvaluator("-5-6/(-2) + sqr(15+x)");
vc tem q pegar o jar e colocar na tua aplicação, depois imnportar assim:
import com.primalworld.math.MathEvaluator;
This jar contains a class that evaluates math expressions.
See the javadoc for more informations.
See the source too. If you modify it, please send me a copy of the modified version.
Check the latest version to download.
Usage:
java MathEvaluator [your math expression]
Ex:
java -cp meval.jar com.primalworld.math.MathEvaluator -cos(0)*(1+2)
java -cp meval.jar com.primalworld.math.MathEvaluator .05*200+3.01
Don't put any space in the expression in command line.
If you want to use the math evaluator in a java code do:
import com.primalworld.math.MathEvaluator;
...
MathEvaluator m = new MathEvaluator("-5-6/(-2) + sqr(15+x)");
m.addVariable("x", 15.1d);
System.out.println( m.getValue() );
Spaces are allowed there.
Meu caro me desculpa a ignorancia, e sei que deve se tratar de algo básico, mas não estou conseguindo fazer minha classe reconhecer o pacote, estou fazendo assim:
criei uma pasta:
Projetos/com/primalworld/math = a classe do pacote MathEvaluator
depois criei a pasta:
Projetos/tentando/math/com = coloquei a minha classe, código a baixo…
package tentando.math.com;
import java.lang.Object;
public class Expressao extends java.lang.Object {
public static void main(String[] args) {
com.primalworld.math.MathEvaluator m = new com.primalworld.math.MathEvaluator("-5-6/(-2) + sqr(15+x)");
m.addVariable("x", 15.1d);
System.out.println( m.getValue() );
}
}
Mas qdo compilo dá o erro:
Expressao.java:23: package com.primalworld.math does not exist
com.primalworld.math.MathEvaluator m = new com.primalworld.math.MathEvaluator("-5-6/(-2) + sqr(15+x)");
Meu caro agora sei que o problema está com configuração de ambiente, me dá uma ajuda pfavor, já li uns 2 tutoriais e não peguei o erro:
Minha arvore está assim:
/projetos (diretorio raiz dos projetos, este fica dentro do meu home)
/projetos/com/primalworld/math/ (fica o meval.jar)
/projetos/meu/br/ (fica a classe que utiliza o classe math…
(informo onde está o .jar):
Na
CLASSPATH = %CLASSPATH%:home/misterx/projetos/com/primalworld/math/meval.jar
Também informo o diretorio raiz dos meus projetos:
CLASSPATH = %CLASSPATH%:home/misterx/projetos/
NA MINHA CLASSE *** (arquivo Calc.java)
package meu.br;
import java.lang.Object;
import com.primalworld.math.MathEvaluator;
public class Calc extends java.lang.Object {
public static void main(String[] args) {
MathEvaluator m = new MathEvaluator("-5-6/(-2) + sqr(15+x)");
m.addVariable("x", 15.1d);
System.out.println( m.getValue() );
}
}
Ainda assim ele dá um erro de que o classe nao existe ou esta com nome errado ( a minha classe):
Exception in thread “main” java.lang.NoClassDefFoundError: Calc (wrong name: meu/br/Calc)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
MEU CARO DE QUALQUER FORMA MUITO OBRIGADO, É QUE PRECISO MUITO DEESE CODIGO E ESTOU ENROLADO DESSE JEITO.
Mister