Opérateurs arithmétique pris en compte dans un int

Fermé
soaleex Messages postés 10 Date d'inscription jeudi 21 août 2014 Statut Membre Dernière intervention 31 janvier 2015 - 31 janv. 2015 à 14:04
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 31 janv. 2015 à 14:42
Bonjour, je suis en train de créer une calculatrice sous android et je poste ici car je pense que mon problème peut se résoudre avec du java.

Pour faire très simple, le calcul demandé par l'utilisateur est stocké dans un String.
J'utilise donc la méthode Integer.ParseInt() pour changer le String en int.

Et la un problème se pose, les opérateurs arithmétiques ne sont pas pris en compte dans le int.
C'est a dire que si l'utilisateur tape 6/2, le "/" n'est pas pris en compte comme un opérateur mais comme un caractère dans le int avec la méthode Integer.ParseInt().

Avez vous une solution a mon problème pour que l'opérateur soit pris en compte comme un opérateur et non comme un caractère ?

Merci.
A voir également:

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
31 janv. 2015 à 14:14
Bonjour,

parseInt(String) ne fait que la conversion d'une chaîne qui représente un entier, c'est à dire l'opération inverse de String.valueOf(int).

Toi ce que tu veux ce n'est pas de la conversion, mais de l'interprétation et évaluation de calculs, c'est une tout autre affaire !

En Java on pourrait utiliser un ScriptEngine, mais sous Android j'ignore quelles sont les SciptEngineFactory disponibles.

Exemple :

ScriptEngine js = new ScriptEngineManager().getEngineByName("js");
int n = (int) js.eval("6/2"); // 3
0
soaleex Messages postés 10 Date d'inscription jeudi 21 août 2014 Statut Membre Dernière intervention 31 janvier 2015
31 janv. 2015 à 14:27
J'ai essayé ton code mais android ne connait pas le ScriptEngine.

Je suis perdu.

Peut-être qu'une méthode avec des indexOf ferait l'affaire ?
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
31 janv. 2015 à 14:42
Pour savoir quels scripts sont disponibles sous Android tu peux faire :

package test;

import javax.script.*;

@SuppressWarnings("restriction")
public class Test {
    public static void main(String[] args) {
	for (ScriptEngineFactory f : new ScriptEngineManager().getEngineFactories())
	    System.out.println(f.getNames()+"\t"+f.getEngineName()+" "+f.getEngineVersion()+"\t"+f.getLanguageName()+" "+f.getLanguageVersion()+"\t"+f.getMimeTypes());
    }
}

Mais effectivement ce genre de code peut ne pas fonctionner en Android.
Je vais te rediriger vers le forum Android, tu y auras sûrement des réponses plus pertinentes.

Quant à faire des indexOf, oui c'est possible, mais ça peut rapidement devenir compliqué notamment à cause de la gestion des priorités.
0