Question Java

Résolu/Fermé
jaja360 Messages postés 7 Date d'inscription mercredi 28 mars 2012 Statut Membre Dernière intervention 18 avril 2012 - 28 mars 2012 à 17:29
jaja360 Messages postés 7 Date d'inscription mercredi 28 mars 2012 Statut Membre Dernière intervention 18 avril 2012 - 28 mars 2012 à 18:55
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.

A voir également:

2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
28 mars 2012 à 17:55
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
jaja360 Messages postés 7 Date d'inscription mercredi 28 mars 2012 Statut Membre Dernière intervention 18 avril 2012
28 mars 2012 à 18:55
Merci pour l'aide !
0