Question Java

Résolu/Fermé
Signaler
Messages postés
7
Date d'inscription
mercredi 28 mars 2012
Statut
Membre
Dernière intervention
18 avril 2012
-
Messages postés
7
Date d'inscription
mercredi 28 mars 2012
Statut
Membre
Dernière intervention
18 avril 2012
-
Bonjour,

Je souhaite faire une classe qui trace un graphique à partir d'une fonction (polynomiale) qu'on lui donne. Ma classe marche bien sauf que je veux que dans une auutre classe il y ait un JTextField dans lequel l'utilisateur entre la fonction (par exemple 3x+4) qu'il souhaite voir s'Afficher dans le graphique. Dans ma classe graphique, j'ai une méthode qui prend plein de valeurs de x et qui calcule le y et trace un point à chaque fois. la ligne qui trouve le 'y' est simplement "y = x+4" par exemple. Est-il possible de convertir l'entrée de le l'utilisateur (un String) en "ligne de code" ?

Merci d'avance.

2 réponses

Messages postés
16441
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
8 décembre 2021
2 921
Tu peux utiliser la méthode java.lang.String) replaceAll pour changer les noms de variables par leur valeurs.
Ensuite tu peux utiliser un ScriptEngineManager en JavaScript par exemple, pour faire l'évaluation du calcul.
Voici un petit exemple :

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class Script
{
	private final static ScriptEngine JavaScript = new ScriptEngineManager().getEngineByName("JavaScript");
	
	public static double eval(String str,String[] var,double...val)
	{
		for (int i=0; i<var.length && i<val.length; i++)
			str = str.replaceAll(var[i], String.valueOf(val[i]));
		
		try 
		{
			return (Double) JavaScript.eval(str);
		} 
		catch (Exception e) 
		{
			System.err.println(e);
			return Double.NaN;
		}
	}
	
	public static void main(String...args)
	{
		String str = "5*x-2*y";
		String[] var = {"x","y"};
		
		System.out.println(eval(str,var,1,1)); // 3.0
		System.out.println(eval(str,var,1,2)); // 1.0
		System.out.println(eval(str,var,2,1)); // 8.0
		System.out.println(eval(str,var,2,2)); // 6.0
	}
}
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
7
Date d'inscription
mercredi 28 mars 2012
Statut
Membre
Dernière intervention
18 avril 2012

Merci pour l'aide !