Hola atodo, he codeado esto:
package equlator;
/**
*
* @author root
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main
(String[] args
) {
//procesador(operacion);
}
public static int procesador
(String proceso
) {
//Variable de instancia donde quedara definida la operacion convertida a string
int procesado = 0;
//Matriz de caracteres de toda la cadena procesada
char[] matrizCaracteres = proceso.toCharArray();
int[] bufferAritmetico = null;
System.
out.
println("Procesando expresion aritmetico-algebraica...."); for(int a = 0; a < proceso.length(); a++)
{
System.
out.
println(matrizCaracteres
[a
]); if(Character.
toString(matrizCaracteres
[a
]).
equals("+") || Character.
toString(matrizCaracteres
[a
]).
equals("*") || Character.
toString(matrizCaracteres
[a
]).
equals("/") || Character.
toString(matrizCaracteres
[a
]).
equals("-")) {
if(Character.
toString(matrizCaracteres
[a
]).
equals("+")) {
bufferAritmetico[a] = +;
}else{
}
}else{
bufferAritmetico
[a
] = Integer.
parseInt(Character.
toString(matrizCaracteres
[a
]).
trim()); }
}
System.
out.
println(bufferAritmetico
); return procesado;
}
}
Mi problema es que no puedo pasar una expresion aritmetica que se recoje de forma String a int, he intentado hacer un pequeño procesador que analiza la cadena y va trasladando los valores a un array int, pero los simbolos de suma multiplicacion res y division no se traspasan.
Dentro del bucle logico del procesador he creado un encadenamiento de condiciones para determinar si el caracter o valor que se va analizar en ese loop es un caracter de operacion aritmetico.
Asi lo hago y si se cumple intento asignar el valor con su equivalente en Integer a la posicion de la matriz determinada por el loop y la variable instancia de este.
Espero que me puedan ayudar.
Saludos
Hola, amm no estoy seguro de si lo que quieres hacer es un analizador lexico para expresiones aritmeticas. Mirando tú código puedo ver varias "anomalias"
si ya tienes tú arreglo matrizCaracteres, creo que es mas conveniente trabajar con los datos de esta nueva variable.
for(int a = 0; a < proceso.length(); a++)
deberias utilizar (a menos de que vayas a trabajar con algo mas)
for(char c: matrizCaracteres)
bufferAritmetico[a] = +;
??
pero los simbolos de suma multiplicacion res y division no se traspasan.
Quieres guardar un tipo char en tipo int, no creo que sea posible y no precisamente por su tamaño, sino por la conversion no puedes trabajar un simbolo como si fuera un numero
, no hay un metodo que te permita hacer el parser... ni siquiera de manera explicita
if(Character.
toString(matrizCaracteres
[a
]).
equals("+") || ...
) { if(Character.
toString(matrizCaracteres
[a
]).
equals("+")) { ....
En esta parte, no entiendo para que vuelves a hacer la comparación, no es mejor que si ya sabes que hay un simbolo "+" hagas lo que tengas que hacer.
Bueno y si quieres hacer un analizador lexico para expresiones aritmeticas dime y te puedo orientar.
Saludos