Ecuación que analiza "100-x + 200" y evalúa su valor en java

El siguiente código debería ser bastante evidente. Lo que he inventado hasta ahora para calcular Y con la variable xy algunas constantes:

public static void main(String[] args) {
    int x=50;
    String str="100-x+200";
    str=str.replaceAll("x", Integer.toString(x));
    String [] arrComputeNumber = str.split("[-|+]");
    String [] arrComputeOperator = str.split("[\\d]");
    int y=Integer.parseInt(arrComputeNumber[0]);
    for (int i = 0; i < arrComputeOperator.length; i++) {
        if (arrComputeOperator[i].equals("-")) {
            y-=Integer.parseInt(arrComputeNumber[i+1]);
        } else if (arrComputeOperator[i].equals("+")) {
            y+=Integer.parseInt(arrComputeNumber[i+1]); 
        }
    }
    System.out.println("y="+y);
}

Lamentablemente no funciona ya que str.split("[\\d]")extrae incorrectamente.

Si se extrae correctamente, supongo que el código anterior funcionaría correctamente. De todos modos, esta implementación es meramente trivial y no tiene en cuenta los paréntesis o la combinación + (que se convierte en menos), etc. No he encontrado mejores formas. ¿Conoces mejores formas de evaluar cadenas como expresión matemática en Java?

Respuesta 1

Tenemos un sitio de intranet que atiende a 50,000 usuarios como máximo (generalmente solo un par de personas están en línea al mismo tiempo). Utilizamos Eclipse, SAP Connector, J2EE 1.4, JSP, Struts 1.x, Tomcat 4.1 y ...

¿Alguna idea de cómo el cliente http apache maneja el encabezado Retry-After? Apache ha implementado el controlador de reintento predeterminado, pero no puedo ver ninguna lógica basada en el encabezado de reintento allí. si no es así ...

Quiero convertir el byte hexadecimal a Unicode. Tengo hexadecimal 0x80 en Windows-1250 y quiero convertir a '\ u0402'. ¿Es posible con métodos estándar sin interruptor?

Necesito crear una vista de texto múltiple que contenga una cadena continua (como columnas en periódicos y revistas) ¿hay alguna forma de hacer esto posible? cualquier respuesta será muy útil, muchas gracias ...