Opérateurs arithmétique pris en compte dans un int
soaleex
Messages postés
10
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
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.
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:
- Opérateurs arithmétique pris en compte dans un int
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Créer un compte instagram sur google - Guide
- Installer windows 10 sans compte microsoft - Guide
- Créer un compte twitter - Guide
2 réponses
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 :
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
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 ?
Je suis perdu.
Peut-être qu'une méthode avec des indexOf ferait l'affaire ?
Pour savoir quels scripts sont disponibles sous Android tu peux faire :
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.
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.