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
|