// EVALUACION DE UNA EXPRESION ARITMETICA class Operaciones { String CADENA = "operacion 5 * 3 + 2 * 8"; public static void main(String V[]) { new Operaciones(); } public Operaciones() { int Respuesta = 0; Respuesta = RecorreCadena(); System.out.println("El resultado es " + Respuesta); } public Operaciones(String CADENA) { this.CADENA = CADENA; } int Operacion(int OPRN1, char OPR, int OPRN2) { int RESP = 0; switch (OPR) { case '+': RESP = OPRN1 + OPRN2; break; case '-': RESP = OPRN1 - OPRN2; break; case '*': RESP = OPRN1 * OPRN2; break; } return RESP; } int RecorreCadena() { int Indice = 0; // es para control del ciclo int Dato1 = 0, Dato2 = 0; char Operador = ' '; boolean Bandera = true; String Numero = ""; for (Indice = 0; Indice < CADENA.length(); Indice++) { Numero = "" + CADENA.charAt(Indice); if ( EresNumero( Numero ) ) { if (Bandera) { Dato1 = Integer.parseInt(Numero); Bandera = false; } else { Dato2 = Integer.parseInt(Numero); Dato1 = Operacion(Dato1, Operador, Dato2); } } if ( EresOperador( Numero ) ) { Operador = Numero.charAt(0); } } return Dato1; } boolean EresOperador(String CHAR) { if ("+-*/".lastIndexOf(CHAR) != -1) return true; return false; } boolean EresNumero(String CHAR) { if ("0123456789".lastIndexOf(CHAR) != -1) return true; return false; } }