revertir un String

Iniciado por raulcerro99, 19 Febrero 2019, 18:35 PM

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

raulcerro99

Hola buenas, se que esto es nivel muy básico pero he estado intentado este ejercicio un dia entero y no hay forma, mi cuestión es si estaría bien planteado el siguiente ejercicio, algo falla evidentemente pero no logro saber como solucionarlo, igual simplemente esta mal y ya está, pero quería ver si me podrian echar una mano.

public String reverseString(String s){
        String inverse;
        inverse = new String();
        if (s.length() > 0){
            for(int i=s.length(); i> 0;i--){
                int x = 0;
                inverse.length(x) = inverse.length(x) + s.charAt(i);
                x++;
            }
        }
        return inverse;

No busco solucionar el ejercicio aquí, solo saber que he planteado mal y yo ya investigaré.
Muchas gracias.

srWhiteSkull

Dime que haces supuestamente en estas líneas :

Código (java) [Seleccionar]
...
                int x = 0;
                inverse.length(x) = inverse.length(x) + s.charAt(i);
                x++;
...


Desde luego yo no lo se, pero lo que si se es que sacas bien los caracteres de atrás hacia adelante en el bucle o eso parece(ya que debería ser el tamaño de s - 1 mientras i sea mayor o igual a 0), pero esa x no pinta nada desde mi punto de vista.

Lo que si deberías hacer es leer la documentación sobre la clase String, https://courses.cs.washington.edu/courses/cse341/98au/java/jdk1.2beta4/docs/api/java/lang/String.html , y fijarte que hay un método denominado concat() que podrías usar con el nuevo string, inverse, y añadir el caracter via Character.toString(s.charAt(i)) . Recueda que concat devuelve una cadena con la concatenación por lo tanto deberás asignar eso también a inverse.

Suerte.

raulcerro99

En esas lineas mi idea es que comenzando desde la posición 0 del String inverse se vayan añadiendo los carácteres, pero algo me dice que no es así.
Muchas gracias por el enlace, le echaré un vistazo, la verdad es que desconocía eso.
(no se si estaré contestando bien a esto, es la primera vez que uso el foro jeje)

animanegra

en la instrucción:


inverse.length(x)


Supuestamente estas llamando al metodo lenght del objeto inverse. Los métodos son funcionalidades que o bien devuelven datos o cambian internamente el estado de un objeto. Luego no se les puedes asignar un valor.

Por otro lado, tienes que ver si los metodos que utilizas existen en las clases de los objetos que estas instanciando.

Para abordar el problema, yo primero pasaría el objeto String original a algo que te permita acceder y manipular los caracteres. Por ejemplo un array de caracteres. Una vez que tienes eso, puedes crear otro array de caracteres de la misma longitud al que le pasas caracter a caracter cada caracter del original en orden inverso. Y despues genera un objeto String a partir del array de caracteres.

42
No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.

raulcerro99

Cita de: animanegra en 19 Febrero 2019, 19:21 PM
en la instrucción:


inverse.length(x)


Supuestamente estas llamando al metodo lenght del objeto inverse. Los métodos son funcionalidades que o bien devuelven datos o cambian internamente el estado de un objeto. Luego no se les puedes asignar un valor.

Por otro lado, tienes que ver si los metodos que utilizas existen en las clases de los objetos que estas instanciando.

Para abordar el problema, yo primero pasaría el objeto String original a algo que te permita acceder y manipular los caracteres. Por ejemplo un array de caracteres. Una vez que tienes eso, puedes crear otro array de caracteres de la misma longitud al que le pasas caracter a caracter cada caracter del original en orden inverso. Y despues genera un objeto String a partir del array de caracteres.

Voy a probar con eso que parece bastante sencillito. Tenia la duda esa de como se usaba el length, en clase había entendido otra cosa, pero ya me queda mas claro, muchas gracias.