Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: MrClassic en 13 de Febrero 2015, 09:15

Título: CU00650B - Entrega nº50 del curso "Aprender programación Java desde cero".
Publicado por: MrClassic en 13 de Febrero 2015, 09:15
Fíjate en el resultado que ofrece el método CombinadoSiempre cuando se le pasan como parámetros dos cadenas vacías. ¿Te parece lógico el resultado?


En la clase tenemos definidos dos atributos o campos. ¿Tienen utilidad conocida a la vista del código de la clase? ¿Se usan en los métodos que tenemos definidos?
Título: Re:CU00650B - Entrega nº50 del curso "Aprender programación Java desde cero".
Publicado por: toni_apr en 13 de Febrero 2015, 19:45
Hola MrClassic

Citar
Partiendo del hecho de que un objeto vacio no es lo mismo que uno nulo, se entiende entonces que se cumpla con estas, la condicion propuesta por los if para ambas cadenas. hay que recordar que es este el valor por defecto de las variables tipo String

Lo que dices es todo cierto, pero la pregunta no es teórica. Hay que observar el resultado del método para poder decir si es lógico o no.

Para que te ayude en la decisión. ¿Cual es el resultado que devuelve el método si el primer parámetro es "A" y el segundo "B"?
1º "AB"
2º "A B"
3º "BA"

Citar
No, en ningún momento se establecen valores permanentes en ellos, solo se capturan dichos valores(Cadenas) desde los parámetros de los métodos, se procesan y se retornan.

Si repasas la aparición de esos atributos, verás que se declaran y se inicializan en el constructor, y no aparecen en el resto del código.
Los métodos reciben parámetros que se parecen en el nombre a los atributos, pero repito, los atributos no aparecen en ningún otro lugar. Esos atributos no se utilizan para nada, sobran, son inoperantes, se pueden eliminar y el código no se resiente.

Saludos
Título: Re:CU00650B - Entrega nº50 del curso "Aprender programación Java desde cero".
Publicado por: MrClassic en 25 de Febrero 2015, 03:49
Cordial Saludo,

Con respecto al resultado descrito,

Si ingreso como parametros las palabras "ala" y "barco" para crear objetos en ambos metodos en el orden establecido, el resultado o resultados serán;

Constructor Combinacion  =¨"ala bar"
Constructor CombinadoSiempre = "alabar"

Esto por la forma como se disponen los resultados a la hora de retornar el String resultante

Si lo ingresado es "";

Constructor Combinacion ="No aporta cadenas validas;
Constructor CombinadoSiempre = "";

Esto por las condiciones impuestas en cada metodo.

Por parte de las variables, si note que no se usan, pero talvez no fui muy claro al plantearlo.

Por parte del constructor CombinadoSiempre, creo que lo mas relevante es como se inicializan las variables enteras longitud_texto1 y longitud_texto2 con un valor de tres.
 
De esta forma se controla siempre que aunque el texto sea superior siempre se muestren solo tres caractes.

En el caso contrario "que sean inferiores a 3" ya se encuentra controlado asignandole dicho valor inferior a tres a estas mismas variables utilizando el metodo x.length().

creo que es aqui donde se encuentra la conyuntura del codigo.

Espero haber entendido y respondido bien el ejercicio, en caso contrario quedo espera de sus apreciaciones y con gusto tratare de interpretarlo mejor.

Slds.
Título: Re:CU00650B - Entrega nº50 del curso "Aprender programación Java desde cero".
Publicado por: toni_apr en 25 de Febrero 2015, 21:47
Hola MrClassic

Todo lo que expones es cierto al 100%.
Has entendido y respondes bien, desde tu punto de vista.

La única objeción, es a la respuesta que da el método (no constructor)
    CombinadoSiempre(String valor_texto1, String valor_texto2)

Este método responde con esta expresión:
    valor_texto1.substring (0,longitud_texto1)+" "+ valor_texto2.substring (0, longitud_texto2);

Donde se ve un espacio en blanco entre las dos cadenas, cuando tu al parecer no contabas con el espacio en blanco.
Supongo que al traspasar este código a tu ordenador, el espacio en blanco se perdió.

Así, a este método, si se le aportan dos cadenas vacías como parámetros, responde con una cadena de longitud 1 (un espacio en blanco, que puede ser difícil de ver)

Por mi parte, este tema del método CombinadoSiempre (por cierto, está mal bautizado, por convención debería llamarse combinadoSiempre) no debería necesitar más comentarios (excepto que se haya quedado algo en el tintero)

Saludos