Dudas con Strings

Iniciado por leogtz, 2 Abril 2010, 04:11 AM

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

leogtz

Hola a todos, mi duda es sencilla.

He estado buscando una manera de modificar cierta posición de una cadena(vector[indice]), algo así:

String cadena = new String("HOLA");
cadena[0] = cadena.charAt(cadena.length() - 1);

Claro que me da error, porque son diferentes tipos de datos.

Lo que quiero es modificar el primer indice por el último caracter de la cadena.

De una manera general, tratar con las posiciones de una cadena.

Lo que intento es rotar una simple cadena, pero estoy teniendo problemas para hacerlo, siempre me da lo mismo, mi algoritmo en C funciona bien, aquí en Java no.
Código (java) [Seleccionar]

public class learn
{
    public static void voltear(String string)
    {
        char vector[] = string.toCharArray();
        vector[0] = string.charAt(string.length() - 1);
        for(int i = 1; i < string.length(); i++)
            vector[i] = string.charAt(i - 1);
        System.out.println(vector);
       
    }
    public static void main(String []args)
    {
        String string = new String("HOLA");
        for(int i = 0; i < string.length(); i++)
        voltear(string);
    }
}
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Leyer

#1
Creo que lo estas haciendo a lo C :P ,en java seria algo asi

Código (java) [Seleccionar]

       StringBuffer string = new StringBuffer("Prueba");
       char b=string.charAt(string.length()-1);
       string.setCharAt(string.length()-1, string.charAt(0));
       string.setCharAt(0, b);


Ademas de permitir ciertos metodos de cadenas como reverse();

o al menos eso creo que es lo que dices :xD

Un Saludo.

leogtz

Sí, mi problema es que quería hacer todo con la clase String, no sabía de StringBuffer.

Queda resuelto así:

Código (java) [Seleccionar]
public class learn
{
    public static void voltear(StringBuffer string)
    {
        StringBuffer temporal = new StringBuffer(string);
        string.setCharAt(0, string.charAt(string.length() - 1));
        for(int i = 1; i < string.length(); i++)
            string.setCharAt(i, temporal.charAt(i - 1));
        System.out.println(string);
    }
    public static void main(String []args)
    {
        StringBuffer string = new StringBuffer("HOLA");
        System.out.println(string);
        for(int i = 0; i < string.length(); i++)
        voltear(string);
    }
}   


Gracias.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Debci

Cita de: Leo Gutiérrez. en  2 Abril 2010, 05:35 AM
Sí, mi problema es que quería hacer todo con la clase String, no sabía de StringBuffer.

Queda resuelto así:

Código (java) [Seleccionar]
public class learn
{
    public static void voltear(StringBuffer string)
    {
        StringBuffer temporal = new StringBuffer(string);
        string.setCharAt(0, string.charAt(string.length() - 1));
        for(int i = 1; i < string.length(); i++)
            string.setCharAt(i, temporal.charAt(i - 1));
        System.out.println(string);
    }
    public static void main(String []args)
    {
        StringBuffer string = new StringBuffer("HOLA");
        System.out.println(string);
        for(int i = 0; i < string.length(); i++)
        voltear(string);
    }
}   


Gracias.
Character.toString();
Solo digo eso ^^

Saludos

leogtz

Cita de: ..::| D3Bć1 |::. en  2 Abril 2010, 10:58 AM
Cita de: Leo Gutiérrez. en  2 Abril 2010, 05:35 AM
Sí, mi problema es que quería hacer todo con la clase String, no sabía de StringBuffer.

Queda resuelto así:

Código (java) [Seleccionar]
public class learn
{
    public static void voltear(StringBuffer string)
    {
        StringBuffer temporal = new StringBuffer(string);
        string.setCharAt(0, string.charAt(string.length() - 1));
        for(int i = 1; i < string.length(); i++)
            string.setCharAt(i, temporal.charAt(i - 1));
        System.out.println(string);
    }
    public static void main(String []args)
    {
        StringBuffer string = new StringBuffer("HOLA");
        System.out.println(string);
        for(int i = 0; i < string.length(); i++)
        voltear(string);
    }
}   


Gracias.
Character.toString();
Solo digo eso ^^

Saludos

.... no te entiendo, ¿podrías ser más explícito?
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Leyer

#5
Cita de: Leo Gutiérrez. en  2 Abril 2010, 20:06 PM
.... no te entiendo, ¿podrías ser más explícito?

Ell se refiere a que llamando Character.toString(); y pasandole como parametro un caracter, este sera convetido a string,

por este error aca

Código (java) [Seleccionar]
String cadena = new String("HOLA");
cadena[0] = cadena.charAt(cadena.length() - 1);


aunke esta mal tambien por que estas haciendo [ 0 ] y es un string mas no un array

Un Saludo.

Debci

Cita de: LEYER en  2 Abril 2010, 21:34 PM
Cita de: Leo Gutiérrez. en  2 Abril 2010, 20:06 PM
.... no te entiendo, ¿podrías ser más explícito?

Ell se refiere a que llamando Character.toString(); y pasandole como parametro un caracter, este sera convetido a string,

por este error aca

Código (java) [Seleccionar]
String cadena = new String("HOLA");
cadena[0] = cadena.charAt(cadena.length() - 1);


aunke esta mal tambien por que estas haciendo
  • y es un string mas no un array

    Un Saludo.
Gracias, no tenia tiempo para ejemplificar, sorry

Saludos