Home pageFind It!Contact JeksJeks documentation

Jeks

 Jeks forum

This forum is dedicated to Jeks.
You may read freely the messages it contents. If you want to write a message or answer to a subject, subscribe to it first.

Subjects Recent messages Login Subscribe

Messages of subject Utilisation du FunctionParser

fred

Member since : Jul 5, 2003
Messages : 4
 Jul 5, 2003 at 9:58 PM
Bonsoir je viens de télécharger Jeks et j'essaye d'utiliser le FunctionParser. Malheureusement, chaque fois que j'essaye de compiler une classe contenant une instruction du type parser.compileFunction, je me retrouve avec le message d'erreur suivant:
"fonction.java:31: unreported exception com.eteks.parser.CompilationException; must be caught or declared to be thrown
f=parser.compileFunction("F ( x ) = x + 1");"
Il me semble pourtant avoir correctement suivi les instructions figurant dans la doc.
D'autres personnes ont elles rencontré ce problème et si oui comment l'avez vous résolu ???

Merci

PS: J'utilise la Mdke 9.1 , le dosseir jdk est lui nommé jdk_1.4.1_01 (c'est celui de la distribution Mdke).import com.eteks.parser.FunctionParser;
import com.eteks.parser.CompiledFunction;
import com.eteks.parser.PascalSyntax;
import com.eteks.parser.Syntax;


class fonction{
Syntax s=new PascalSyntax();
FunctionParser parser;
String var,form;
CompiledFunction f ;
boolean b;
char c1,c2;
String egal;
double res;

fonction(){
parser = new FunctionParser(s);
form="F(x)=x^2+x+1";
s=parser.getSyntax();
b=s.isValidIdentifier(form);
}

fonction(String var, String form){
parser = new FunctionParser(s);
this.var=var;
s=parser.getSyntax();
b=s.isValidIdentifier(var);
c1=s.getOpeningBracket();
c2=s.getClosingBracket();
egal=s.getAssignmentOperator ();
this.form="f(x)="+form;
f=parser.compileFunction("F ( x ) = x + 1");

}
}


PPS: Au cas où voici le code que j'ai utilisé.
---
A bientôt

Fred

fred

Member since : Jul 5, 2003
Messages : 4
 Jul 5, 2003 at 11:14 PM
Je viens de modifier mon code, le message d'erreur n'apparait plus. Cependant lorsque j'essay de "computer" la fonction ça merdre.
D'abord le nouveau code:

import com.eteks.parser.FunctionParser;
import com.eteks.parser.CompiledFunction;
import com.eteks.parser.PascalSyntax;
import com.eteks.parser.Syntax;
import com.eteks.parser.CompilationException;


class fonction{
Syntax s=new PascalSyntax();
FunctionParser parser;
String var,form;
CompiledFunction f ;
boolean b;
char c1,c2;
String egal;
double res;
fonction(){
parser = new FunctionParser(s);
form="F(x)=x^2+x+1";
s=parser.getSyntax();
b=s.isValidIdentifier(form);
}
fonction(String var, String form){
parser = new FunctionParser(s);
this.var=var;
s=parser.getSyntax();
b=s.isValidIdentifier(var);
c1=s.getOpeningBracket();
c2=s.getClosingBracket();
egal=s.getAssignmentOperator ();
this.form="f(x)="+form;
try{
f=parser.compileFunction(form);
}
catch(CompilationException e){
StringBuffer pointer = new StringBuffer ("^");
for (int i = 0; i < e.getCharacterIndex (); i++)
pointer.insert (0, ' ');
System.out.println("Error : " + e.getMessage () + ".");
}

}
public void calcul(){
try{res = f.computeFunction (new double [] {2.1});}
catch(Exception e){}
}

}Exception in thread "main" java.lang.NullPointerException
at fonction.calcul(fonction.java:44)
at test.main(test.java:7)


J'ai utilisé les catch et try pour éviter les erreurs à la compialtion. Cependant le résusltat affiché est en permanence 0. Si je n'utilise pas le second catch, je reçois un message d'erreur du type:
"Exception in thread "main" java.lang.NullPointerException
at fonction.calcul(fonction.java:44)
at test.main(test.java:7)"

Voilà si quelqu'un peut m'aider ça sera gentil. Merci.
---
A bientôt

Fred

fred

Member since : Jul 5, 2003
Messages : 4
 Jul 6, 2003 at 1:34 PM
Si j'ai bien compris, l'utilisation du try-catch permet d'éviter l'erreur à la compilation, cependant lorsque on appelle la classe à partir d'un autre programme il semble que la fonction ne soit pas compilée.


---
A bientôt

Fred

fred

Member since : Jul 5, 2003
Messages : 4
 Jul 6, 2003 at 2:09 PM
C'est bon j'ai trouvé, le problème venait du fait que dans le constructeur je compilais form (le paramètre) au lieu de this.form(la formule).

Merci tout de même à ceux qui auront lu jusque là.

Bonne journée
---
A bientôt

Fred


Home pageFind It!ContactTop

© Copyrights 1997-2023 eTeks - All rights reserved

JeksJeks documentation