Foro de elhacker.net

Programación => Java => Mensaje iniciado por: leogtz en 2 Abril 2010, 04:11 am



Título: Dudas con Strings
Publicado por: leogtz en 2 Abril 2010, 04:11 am
Hola a todos, mi duda es sencilla.

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

Código:
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
  1. public class learn
  2. {
  3.    public static void voltear(String string)
  4.    {
  5.        char vector[] = string.toCharArray();
  6.        vector[0] = string.charAt(string.length() - 1);
  7.        for(int i = 1; i < string.length(); i++)
  8.            vector[i] = string.charAt(i - 1);
  9.        System.out.println(vector);
  10.  
  11.    }
  12.    public static void main(String []args)
  13.    {
  14.        String string = new String("HOLA");
  15.        for(int i = 0; i < string.length(); i++)
  16.        voltear(string);
  17.    }
  18. }


Título: Re: Dudas con Strings
Publicado por: Leyer en 2 Abril 2010, 05:12 am
Creo que lo estas haciendo a lo C :P ,en java seria algo asi

Código
  1.        StringBuffer string = new StringBuffer("Prueba");
  2.        char b=string.charAt(string.length()-1);
  3.        string.setCharAt(string.length()-1, string.charAt(0));
  4.        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.


Título: Re: Dudas con Strings
Publicado por: leogtz 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
  1. public class learn
  2. {
  3.    public static void voltear(StringBuffer string)
  4.    {
  5.        StringBuffer temporal = new StringBuffer(string);
  6.        string.setCharAt(0, string.charAt(string.length() - 1));
  7.        for(int i = 1; i < string.length(); i++)
  8.            string.setCharAt(i, temporal.charAt(i - 1));
  9.        System.out.println(string);
  10.    }
  11.    public static void main(String []args)
  12.    {
  13.        StringBuffer string = new StringBuffer("HOLA");
  14.        System.out.println(string);
  15.        for(int i = 0; i < string.length(); i++)
  16.        voltear(string);
  17.    }
  18. }  

Gracias.


Título: Re: Dudas con Strings
Publicado por: Debci en 2 Abril 2010, 10:58 am
Sí, mi problema es que quería hacer todo con la clase String, no sabía de StringBuffer.

Queda resuelto así:

Código
  1. public class learn
  2. {
  3.    public static void voltear(StringBuffer string)
  4.    {
  5.        StringBuffer temporal = new StringBuffer(string);
  6.        string.setCharAt(0, string.charAt(string.length() - 1));
  7.        for(int i = 1; i < string.length(); i++)
  8.            string.setCharAt(i, temporal.charAt(i - 1));
  9.        System.out.println(string);
  10.    }
  11.    public static void main(String []args)
  12.    {
  13.        StringBuffer string = new StringBuffer("HOLA");
  14.        System.out.println(string);
  15.        for(int i = 0; i < string.length(); i++)
  16.        voltear(string);
  17.    }
  18. }  

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

Saludos


Título: Re: Dudas con Strings
Publicado por: leogtz en 2 Abril 2010, 20:06 pm
Sí, mi problema es que quería hacer todo con la clase String, no sabía de StringBuffer.

Queda resuelto así:

Código
  1. public class learn
  2. {
  3.    public static void voltear(StringBuffer string)
  4.    {
  5.        StringBuffer temporal = new StringBuffer(string);
  6.        string.setCharAt(0, string.charAt(string.length() - 1));
  7.        for(int i = 1; i < string.length(); i++)
  8.            string.setCharAt(i, temporal.charAt(i - 1));
  9.        System.out.println(string);
  10.    }
  11.    public static void main(String []args)
  12.    {
  13.        StringBuffer string = new StringBuffer("HOLA");
  14.        System.out.println(string);
  15.        for(int i = 0; i < string.length(); i++)
  16.        voltear(string);
  17.    }
  18. }  

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

Saludos

.... no te entiendo, ¿podrías ser más explícito?


Título: Re: Dudas con Strings
Publicado por: Leyer en 2 Abril 2010, 21:34 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
  1. String cadena = new String("HOLA");
  2. 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.


Título: Re: Dudas con Strings
Publicado por: Debci en 2 Abril 2010, 22:07 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
  1. String cadena = new String("HOLA");
  2. 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