7
votes

Exécution d'une équation mathématique dans Android

Je dois être capable de gérer une équation mathématique telle que "(45 + 9) / 8" dans mon application. Je voulais simplement l'évaluer à l'aide de JavaScript, mais j'ai réalisé que je ne peux pas utiliser javax.script à Android. Donc, j'ai trouvé webview, mais j'ai un peu de difficulté à l'utiliser. La plupart des exemples font référence à une page externe avec le code JS ou à l'aide de "JavaScript: Var retour ... etc." J'aurais besoin d'utiliser ce dernier, mais j'ai eu un problème de retour de la variable à mon application.

est-il possible d'avoir le JS l'évalue puis d'écrire la valeur à une vue-texte cachée?


2 commentaires

Mec, pas besoin de JavaScript. Tout ce dont vous avez besoin est le java standard pour calculer les équations de mathématiques.


Je l'utilise pour les équations entrées par l'utilisateur. Ce qui signifie que je dois être capable d'évaluer une chaîne.


4 Réponses :


11
votes

Vérifiez exp4j . C'est un évaluateur d'expression simple pour Java. Pour l'équation que vous avez postée dans votre question, vous pouvez simplement faire:

Calculable calc = new ExpressionBuilder("(45+9)/8").build()
double result1=calc.calculate();


2 commentaires

Votre réponse semble définitivement comme ça va être une meilleure solution que j'avais espérée. Où puis-je mettre les dossiers de De et Meta-Inf dans l'application Android?


Tout ce que vous avez à faire est de mettre le pot dans votre annuaire / libs.




1
votes

Essayez celui-ci:

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.swing.JOptionPane;

private void btnEqualsActionPerformed(java.awt.event.ActionEvent evt) {
    String expression = txtResult.getText();
    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine engine = mgr.getEngineByName("JavaScript");
    try {
        result = engine.eval(expression).toString();
        txtResult.setText(result);
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, txtResult.getText() + " cannot be calculated. Try again!", "Error on calculation!", JOptionPane.WARNING_MESSAGE);
        txtResult.setText("");
    }
}


1 commentaires

Je ne peux pas importer les classes nécessaires à Android.



0
votes

Vous pouvez le faire en utilisant exp4j strong> dans Android Studio.

  • Téléchargez le pot binaire Exp4J du site officiel. Téléchargez P> li>

  • Importez exp4j dans le studio Android en copiant les fichiers JAR dans app / libs code> Dossier. P> li>

  • ajoutez la ligne suivante dans votre module build.gradle code> dépendances de fichier. p>

    package com.example.expressionevaluator;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.util.Log;
    
    import de.congrace.exp4j.Calculable;
    import de.congrace.exp4j.ExpressionBuilder;
    import de.congrace.exp4j.UnknownFunctionException;
    import de.congrace.exp4j.UnparsableExpressionException;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Calculable calc = null;
            try {
                calc = new ExpressionBuilder("(200 + 100) / 2 + 300").build();
                double result = calc.calculate();
                Log.d("result", result);
    
            } catch (UnknownFunctionException e) {
                e.printStackTrace();
            } catch (UnparsableExpressionException e) {
                e.printStackTrace();
            }
        }
    }
    


0 commentaires