EVALUA_Operaciones.java



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