// 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;
}
}