Question Java

Résolu
jaja360 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
jaja360 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
Merci pour l'aide !
0