Foros del Web » Programación para mayores de 30 ;) » Java »

Copiar una cadena en otra

Estas en el tema de Copiar una cadena en otra en el foro de Java en Foros del Web. Saludos compañeros lo que sucede es que estaba haciendo un metodo en el cual recibo dos cadenas donde una esta vacia y la otra no, ...
  #1 (permalink)  
Antiguo 13/01/2014, 20:50
 
Fecha de Ingreso: septiembre-2013
Mensajes: 57
Antigüedad: 10 años, 6 meses
Puntos: 0
Pregunta Copiar una cadena en otra

Saludos compañeros

lo que sucede es que estaba haciendo un metodo en el cual recibo dos cadenas donde una esta vacia y la otra no, entonces debo copiar una en la otra (llena en la vacia) si usar metodos de la clase Array ni la clase String pero tengo un problema y es que tengo una clase llamada test y una llamada cadena la cual contiene otros metodos y mi clase test hace de interfaz para llamar los metodos entonces en mi clase test tengo:

String cad1="hola";
String cad2="";
Cadena=new Cadena();
cadena.copiarCadena(s1,s2);
System.out.println(s2);

mi clase Cadena tiene el metodo

public void copiarCadena(String cad1,String cad2){
char str1[]=cad1.toCharArray();
for(int i=0;i<str1.length;i++){
cad2+=str1[i];
}
System.out.println(s2); //para saber si lo copia bien
}

el problema esta es en que no se porque dentro del metodo copia la cadena en la otra (por la linea despues del for) hasta ahi todo bien pero cuando en la interfaz imprimo la cad2 ya esta de nuevo vacia o < ""> me pueden explicar porque ? y en que casos similares sucede esto
gracias
  #2 (permalink)  
Antiguo 14/01/2014, 02:16
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Copiar una cadena en otra

s1 y s2 que valor tienen? Porque desde luego no son lo mismo que cad1 y cad2

Y para hacer una cadena que sea una más la otra, ¿no puedes usar concat como todo hijo del vecino?
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 14/01/2014, 07:19
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Copiar una cadena en otra

Hola:

En java las cadenas son inmutables, eso quiere decir que no puedes cambiar su contenido. Dentro del método, en el momento que haces

cad2+=str1[i];

estas creando otro String que se guardará en cad2, la misma variable que recibes como parámetro. Pero el objeto cad2 que has pasado desde fuera permanece inmutable.

Si quieres modificar el cad2 de fuera, asígnalo en el return de tu metodo

cad2 = cadena.copiarCadena(s1,s2)

y, por supuesto, pon el return cad2 dentro del método.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 14/01/2014, 13:32
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Copiar una cadena en otra

Hola,

Adicionalmente, que las cadenas son inmutables como indica chuidiang, también el motivo por el cual no se modifica es porque en Java los parámetros se pasan por Valor y no por Referencia.

Cita:
Iniciado por chuidiang Ver Mensaje
... la misma variable que recibes como parámetro. Pero el objeto cad2 que has pasado desde fuera permanece inmutable. ...
Código Java:
Ver original
  1. String hello = "Hola";
  2. modify(hello);
  3.  
  4. void modify(String s) {
  5.   s = "Mundo";
  6. }
Aún sin el concepto de mutabilidad, la variable hello no se modifica, porque al método modify se le pasó una copia de la variable hello.

En otras palabras, s apunta a un lugar donde está almacenada la palabra "Mundo", mientras que hello apunta a un lugar donde está almacenada la palabra "Hola". Pero s y hello apuntan al mismo lugar, solamente cuando se inicia el método, si se cambia la referencia ya no apuntan al mismo lugar, porque no son la misma variable.

Seguramente ya lo sabias, solamente era para aclarar mas el concepto para "dilan_snoopy",

Saludos,

Última edición por HackmanC; 14/01/2014 a las 13:52 Razón: aclaración
  #5 (permalink)  
Antiguo 14/01/2014, 19:30
 
Fecha de Ingreso: septiembre-2013
Mensajes: 57
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Copiar una cadena en otra

Muchas gracias me quedo mas claro, por ultimo el metodo toCharArray() es de la clase string no? lo que sucede es que no puedo usar metodos de la clases string ni array entonces lo que podria hacer seria return cad2=cad1 y cad2= el metodo llamado.... si ?
  #6 (permalink)  
Antiguo 14/01/2014, 19:59
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Copiar una cadena en otra

Hola,

Cita:
Iniciado por dilan_snoopy Ver Mensaje
... entonces debo copiar una en la otra (llena en la vacia) si usar metodos de la clase Array ni la clase String ...
El problema es si quieres dos copias del String con el mismo contenido, o dos variables apuntando al mismo String.

Cita:
Iniciado por dilan_snoopy Ver Mensaje
... return cad2=cad1 y cad2= el metodo llamado.... si ?
Técnicamente lo que estas haciendo es solamente "apuntando" a la misma String con las dos variables. Son dos variables apuntando al mismo contenido.

Pero como indicó chuidiang, como los String son inmutables, en ningún momento vas a poder modificar el contenido de cualquiera de los dos String, entonces da igual. Así que el método que indicas sería correcto, con la observación que son dos variables "apuntando" al mismo lugar con el mismo contenido.

Saludos,

Etiquetas: cadena, clase, metodo, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:01.