String in Rechenoperation zerlegen und ausführen

Conni

Grünschnabel
Hallo alle miteinander!

Ich hab ne Aufgabe bei der ich hänge.
Und zwar habe ich einen String, z.B. "20*5-3" und dieser String soll zu einer Rechenoperation umgewandelt werden. Allerdings gilt hier nicht Punkt vor Strich, sondern es soll von Links nach Rechts gerechnet werden.
Also 20*5 = 100-3 = 97.

Ich habe die Zahlen und die Operationszeichen bereits getrennt und in LinkedLists gesammelt.

--> LinkedList<Character> ops enthält * und -
--> LinkedList<Integer> zahlen enthält 20 und 5 und 3

Jetzt weiß ich nur nicht, wie ich das zusammensetzen muss, dass dabei mein Ergebnis rauskommt.

Kann mir einer da weiterhelfen?
Ich danke Euch schon mal im Vorraus.

Conni
 

Thomas Darimont

Erfahrenes Mitglied
Hallo,

entweder baust du dir selber einen kleinen Expression Parser / Evaluator oder du verwendest das was es schon gibt:
Java:
/**
 * 
 */
package de.tutorials;

import java.io.StringReader;

import javax.script.ScriptEngineManager;
import javax.xml.xpath.XPathFactory;

import org.xml.sax.InputSource;

/**
 * @author Thomas.Darimont
 * 
 */
public class ExpressionEvalutationExample {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        System.out.println(XPathFactory.newInstance().newXPath().evaluate(
                "(3+2)*4", new InputSource(new StringReader("<xml/>"))));
        
        
        System.out.println(new ScriptEngineManager().getEngineByName("javascript").eval("20*5-3"));
    }

}

Ausgabe:
Code:
20
97.0


Gruß Tom
 

Conni

Grünschnabel
Hey, Danke für die schnelle Antwort.

Ich schau mir das jetzt erstmal in Ruhe an, um das auch zu verstehen. Hätte nicht gedacht, dass das so ein kurzer Code sein könnte. :)