elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problemas con for y concatenar caracteres.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con for y concatenar caracteres.  (Leído 3,622 veces)
#Aitor

Desconectado Desconectado

Mensajes: 173



Ver Perfil
Problemas con for y concatenar caracteres.
« en: 24 Junio 2017, 22:24 pm »

Buenas, estoy probando Android Studio, nunca antes había programado en Java, por lo que se me está haciendo un poco lidioso por la cantidad de cosas diferentes a otros lenguajes.

Me surgieron estas dos preguntas. Este es el código:

Código
  1.  
  2.              for(int i = 0; i < text1.length(); i++) {
  3.                  String ejemplo = "";
  4.                  ejemplo += text1.charAt(i);
  5.  
  6.                  editText1.setText("Carácteres: " + ejemplo);
  7.              }


Encuentro los siguientes problemas, (empezaré por los que a mí más me importan).

1. La variable ejemplo muestra el último carácter del string, y no la cadena entera que esperaba formar.
2. La variable ejemplo no es accesible desde fuera del for.


Otras curiosidades o problemas que he tenido:


1. La variable ejemplo la he necesitado inicializar debido a que no me dejaba compilar sin haberla inicializado.





EDIT:
Código
  1.     String ejemplo = "";
  2.  
  3.              for(int i = 0; i < text1.length(); i++) {
  4.  
  5.                  ejemplo += text1.charAt(i);
  6.  
  7.  
  8.              }
  9.                editText1.setText("Carácteres: " + ejemplo);

Vale, declarar la variable fuera y antes del for, de esta forma es accesible desde fuera del for y durante éste. La cosa ahora es, ¿No puedo compilarla sin inicializarla?


« Última modificación: 24 Junio 2017, 23:41 pm por #Aitor » En línea

Mi algoritmo en PHP (estupideces y más).
Código
  1. while($Se_feliz){
  2.  Piensa_un_OBJETIVO(); // Sin excusas!
  3.  if($Tienes_un_objetivo){
  4.    Suspira(); // Sé paciente.
  5.    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
  6.      //RETURN; ¿O volvemos a empezar?
  7.    }else{
  8.      Inténtalo_de_nuevo();
  9.    }
  10.  }
  11. }
3n31ch


Desconectado Desconectado

Mensajes: 445


Grandes conocimientos engendran grandes dudas


Ver Perfil
Re: Problemas con for y concatenar caracteres.
« Respuesta #1 en: 26 Junio 2017, 01:40 am »

nunca antes había programado en Java, por lo que se me está haciendo un poco lidioso por la cantidad de cosas diferentes a otros lenguajes.

Antes que nada, aclarar, que en tu código lo único "raro" que no he visto en otros lenguajes es el charAt, y teniendo en consideración que sabes PHP (por tu firma) he de suponer que sabes javascript, así que esto tampoco es nuevo.  :-X

(Si te refieres a Java en general... si tiene sus cosas raras, pero tampoco tanto. Así que sigue estudiándolo, a ver si este foro se hace mas activo  :P)

Ahora. Como bien identificaste el error estaba en que declarabas el String dentro del for y por tanto siempre hacia un reset del valor a "" y luego almacena un carácter: Resultado final, un String con el ultimo carácter.

Respectos la accesibilidad de la variable(punto 2) tiene que ver con esto: http://www.javawithus.com/tutorial/scope-and-lifetime-of-variables
Y si lo vez por el lado de la "lógica", lo que te esta diciendo java es que si por ejemplo "text1" no tuviera caracteres entonces el String ejemplo nunca seria declarado, por tanto la variable no existirá. Para evitar este tipo de errores Java te obliga a que lo declares antes.

Respecto a tu nueva curiosidad: Esto sucede debido a que en el ciclo for haces un +=, dicho carácter de asignación lo que hace es añadir al String YA EXISTENTE un conjunto de caracteres nuevos. Por tanto, si tu no inicializaras el String previamente, entonces no tendrías un String con valores YA EXISTENTES, y por tanto, arrojara error semántico. Esto lo detecta el compilador y te arroja error.




En línea

#Aitor

Desconectado Desconectado

Mensajes: 173



Ver Perfil
Re: Problemas con for y concatenar caracteres.
« Respuesta #2 en: 29 Junio 2017, 14:43 pm »

Antes que nada, aclarar, que en tu código lo único "raro" que no he visto en otros lenguajes es el charAt, y teniendo en consideración que sabes PHP (por tu firma) he de suponer que sabes javascript, así que esto tampoco es nuevo.  :-X

(Si te refieres a Java en general... si tiene sus cosas raras, pero tampoco tanto. Así que sigue estudiándolo, a ver si este foro se hace mas activo  :P)

Ahora. Como bien identificaste el error estaba en que declarabas el String dentro del for y por tanto siempre hacia un reset del valor a "" y luego almacena un carácter: Resultado final, un String con el ultimo carácter.

Respectos la accesibilidad de la variable(punto 2) tiene que ver con esto: http://www.javawithus.com/tutorial/scope-and-lifetime-of-variables
Y si lo vez por el lado de la "lógica", lo que te esta diciendo java es que si por ejemplo "text1" no tuviera caracteres entonces el String ejemplo nunca seria declarado, por tanto la variable no existirá. Para evitar este tipo de errores Java te obliga a que lo declares antes.

Respecto a tu nueva curiosidad: Esto sucede debido a que en el ciclo for haces un +=, dicho carácter de asignación lo que hace es añadir al String YA EXISTENTE un conjunto de caracteres nuevos. Por tanto, si tu no inicializaras el String previamente, entonces no tendrías un String con valores YA EXISTENTES, y por tanto, arrojara error semántico. Esto lo detecta el compilador y te arroja error.




Buenas, primero que nada muchas gracias.

Sobre lo de el código, es cierto que la parte que expuse no hay nada raro más de los problemas que me daba, el SetText y el ChartAt, pero detrás de eso había bastante lineas de código que se me habían hecho raras, como la necesidad de pasar los valores obtenidos a String porque los devuelve al principio como un editable todo raro, y demás movidas...  ;-) :silbar:

Respecto a las dudas resueltas, tienen todo el sentido del mundo, y ahora realmente las encuentro lógicas y coherentes.

Lo dicho, muchas gracias.

PD: ¿Qué le está pasando al foro? No suelo pasarme mucho por aquí, la verdad, cuándo me da la neura de tocar algo que tenga que ver con la programación o alguna duda repentina, pero recuerdo esos tiempos en el que Dvyr y Elektro respondían absolutamente a cada uno de los comentarios que había, y con ellos muchos otros usuarios. ¿Dónde demonios están?

Saludos!
En línea

Mi algoritmo en PHP (estupideces y más).
Código
  1. while($Se_feliz){
  2.  Piensa_un_OBJETIVO(); // Sin excusas!
  3.  if($Tienes_un_objetivo){
  4.    Suspira(); // Sé paciente.
  5.    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
  6.      //RETURN; ¿O volvemos a empezar?
  7.    }else{
  8.      Inténtalo_de_nuevo();
  9.    }
  10.  }
  11. }
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Crear String a partir de una Lista de caracteres son concatenar(problema)
Java
er_rafael_rafi 5 8,432 Último mensaje 24 Junio 2009, 17:38 pm
por juancho77
Problemas con array (unidimencional) de caracteres [C++]
Programación C/C++
.:BlackCoder:. 5 4,295 Último mensaje 20 Mayo 2010, 23:11 pm
por .:BlackCoder:.
Ayuda! Concatenar carácteres en C
Programación C/C++
ARCAME 1 2,420 Último mensaje 2 Diciembre 2012, 20:50 pm
por durasno
problemas con concatenar cadenas
Programación C/C++
d91 2 2,140 Último mensaje 15 Abril 2014, 15:53 pm
por d91
Problemas limitando caracteres en el ingreso
Programación C/C++
Beginner Web 5 2,777 Último mensaje 11 Julio 2018, 14:05 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines