GTA Közösség - A magyar GTA fórum

Általános beszélgetés => Beszélgetés => Kérdések, Segítség => A témát indította: thegergo02 - 2017. December 21. - 21:59:56

Cím: Android Studio ScriptEngine
Írta: thegergo02 - 2017. December 21. - 21:59:56
Sziasztok!
 
Alapra Android Studioban nincs is ScriptEngine csak külön lib-ként tudtam berakni, de amikor használnám kifagy az app és a hibaüzenet:
 

java.lang.NullPointerException: Attempt to invoke interface method \'java.lang.Object javax.script.ScriptEngine.eval(java.lang.String)\' on a null object reference

 
Egy ideje már baszakszok vele, aki tudja hogy tudnám javítani elmondhatná.
 
 
 

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName(\"JavaScript\");
result = ((Double) engine.eval(currentaction));
display.setText(result.toString());

 
 
Cím: Android Studio ScriptEngine
Írta: dugasz1 - 2017. December 22. - 02:55:42
Nem használtam még ilyeneket javában. De úgy tűnik nincs JavaScript nevű engined. Úgy olvastam a java 8 ba egy nashorn nevű javascript engine van úgyhogy azt kell getelned.
 
http://winterbe.com/posts/2014/04/05/java8-nashorn-tutorial/
Cím: Android Studio ScriptEngine
Írta: thegergo02 - 2017. December 22. - 10:08:13
Köszi amint tudom kipróbálom.
Cím: Android Studio ScriptEngine
Írta: thegergo02 - 2017. December 22. - 10:19:41
A hiba ugyanaz, szerintem a stringet szétszedem valami forral aztán lesz ami lesz.
Cím: Android Studio ScriptEngine
Írta: dugasz1 - 2017. December 22. - 10:29:15
Most kipróbáltam én is nekem lefut gond nélkül.
 

   public static void main(String [] args){
        ScriptEngine engine = new ScriptEngineManager().getEngineByName(\"nashorn\");
        try {
            engine.eval(\"print(\'Hi\');\");
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }

 
Milyen IDE-t használsz?
Cím: Android Studio ScriptEngine
Írta: thegergo02 - 2017. December 22. - 10:32:45
Idézetet írta: dugasz1 date=1513934955


   
      Most kipróbáltam én is nekem lefut gond nélkül.
   
   

   public static void main(String [] args){
        ScriptEngine engine = new ScriptEngineManager().getEngineByName(\"nashorn\");
        try {
            engine.eval(\"print(\'Hi\');\");
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }

   
      Milyen IDE-t használsz?
   


Android Studio, de már megtaláltam egy ScriptEngine nélküli megoldást, legalább nem kell növelni az app méretét libraryval.
Cím: Android Studio ScriptEngine
Írta: dugasz1 - 2017. December 22. - 10:37:46
Mi lett a megoldás? (Tényleg ott a címben is)
Cím: Android Studio ScriptEngine
Írta: thegergo02 - 2017. December 22. - 10:47:50

               if (currentaction.contains(\"+\")) {
                    String[] array = currentaction.split(\"\\\\+\");
                    result = Double.parseDouble(array[0])+Double.parseDouble(array[1]);
                    currentaction = result.toString();
                    display.setText(result.toString());
                } else if (currentaction.contains(\"-\")) {
                    String[] array = currentaction.split(\"\\\\-\");
                    result = Double.parseDouble(array[0])-Double.parseDouble(array[1]);
                    currentaction = result.toString();
                    display.setText(result.toString());
                } else if (currentaction.contains(\"*\")) {
                    String[] array = currentaction.split(\"\\\\*\");
                    result = Double.parseDouble(array[0])*Double.parseDouble(array[1]);
                    currentaction = result.toString();
                    display.setText(result.toString());
                } else if (currentaction.contains(\"/\")) {
                    String[] array = currentaction.split(\"\\\\/\");
                    result = Double.parseDouble(array[0])/Double.parseDouble(array[1]);
                    currentaction = result.toString();
                    display.setText(result.toString());
                } else {
                    display.setText(currentaction);
                }

 
Tudom OMFG legalább case-t használnék, de működik.
 
 
Cím: Android Studio ScriptEngine
Írta: dugasz1 - 2017. December 26. - 02:32:00
Nem teljesen vágom. Nem JavaScript akartál futtatni am?
Cím: Android Studio ScriptEngine
Írta: thegergo02 - 2017. December 29. - 10:11:15
Azt a próbálkozást már én se nagyon értem.