[SOLUCIONADO] Recorrer arreglo en java de fin a inicio

Iniciado por DoSser, Noviembre 02, 2016, 09:20:43 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Noviembre 02, 2016, 09:20:43 PM Ultima modificación: Noviembre 03, 2016, 09:16:50 PM por rollth
Hola :)  estoy trabajando en un programita que convierta expresiones infijas en prefijas,  teniendo en cuenta que para tal conversión se necesita leer la expresión de derecha a izquierda e ir acomodando operadores con operandos de esa manera, y después se vuelve a leer  la expresión  resultante de derecha a izquierda para obtener la expresión final. bueno pues resulta que se me ocurrió hacerlo de esta manera:
Código: java

  /*voa tratar de leer de derecha a izquierda a infija para leerla normal
        a la hora de convertir vale?*/
        //guarda en array el valor de infija
        char[] a = infija.toCharArray();
        // respalda infija
       String respaldo = "";
        for(int x = infija.length(); x > 0; x--)
        {
            respaldo = respaldo + a[x];
        }
        /*infija ahora toma el valor de respaldo,
        lo que indica que ya esta acomodada leida de derecha a izq*/
         infija  = respaldo;

Se supone que con el ciclo for pretendo empezar a leer la expresión desde el ultimo carácter en el arreglo hasta su posición 0 e irla almacenando en el String respaldo y luego que infija sea igual a respaldo para después leerla como si fuera una conversión de infijo a postfijo, y  después de esto volvería a hacer un ciclo for repitiendo el el mismo procedimiento del primer ciclo para obtener mi expresión 
final pero después de que me pide la expresión, el programa truena y  me muestra un error:
Código: java

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at convertidordefunciones.Prefija.convertir(Prefija.java:31)
at convertidordefunciones.Prefija.evaluar(Prefija.java:15)
at convertidordefunciones.ConvertidorDeFunciones.main(ConvertidorDeFunciones.java:23)
Java Result: 1

este error solo aparece cuando en el ciclo for a x le doy el valor de la longitud infija y trato de decrementarlo..
¿Podría alguien explicarme por que no me funciona?
o si alguna alma bondadosa tiene la amabilidad de explicarme como lo podría hacer.. ya se que hay muchos tutoriales en youtube pero  mi intención es aprender como hacerlo.. estoy seguro de que si veo el tutorial en youtube terminare copiando el código XD

El error que te da es porque estás intentando entrar a una posición de un array que no existe.

Prueba a en lugar de hacer "infija.length()" hacer "infija.length", sin parentesis.

.length se usa para un array (no es un metodo)
.length() se usa para un String
.size se usa para un ArrayList

Espero que te sirva :D
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Los indices de los arreglos empiezan con 0, si queres acceder al ultimo elemento es el largo -1

Muy bien!!  lo que menciona rollth no lo sabia,  muchas gracias! y tambien a seth que lo que menciona hizo que me  funcionara el programa. Saludos :)