Buenas!
En el ejercicio de este capitulo, se trata de contestar preguntas. El enunciado es el siguiente:
Crea un objeto de tipo Combinador y prueba a ejecutar los dos métodos disponibles pasando distintos parámetros: cadenas con más de tres caracteres, una cadena con más de tres y otra con menos de tres y ambas con menos de tres caracteres. 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?Bueno. . . aquí vamos:
package Combinacion;
public class Fusion {
public Fusion(){}
public String pegate(String valor1, String valor2){
if (valor1.length() >= 3 && valor2.length() >= 3){
String combinacion = valor1.substring(0, 3) + " " + valor2.substring(0, 3);
return combinacion;
}
else { return "No aporta cadenas válidas"; }
}
public String CombinadoSiempre (String valor_texto1, String valor_texto2) {
int longitud_texto1 = 3;
int longitud_texto2 = 3;
String CombinadoSiempre = "";
if (valor_texto1.length() < 3) {
longitud_texto1 = valor_texto1.length();
}
if (valor_texto2.length() < 3) { longitud_texto2 = valor_texto2.length(); }
CombinadoSiempre = valor_texto1.substring (0,longitud_texto1)+" "+ valor_texto2.substring (0, longitud_texto2);
return CombinadoSiempre;
}
}
En el primer método dice que si valor1 y valor2 es mayor o igual a 3, procede con la combinación de caracteres.. si no es así, devuelve un mensaje diciendo que "No aporta cadenas validas".
Mientras que en el segundo método:
* Se igualan a 3, en variables diferentes, las longitudes máximas de cada palabra.
* Se iguala una variable String a un espacio vacio(se inicializa al parecer con "").
* En el primer método dice que si valor1 y valor2 es mayor o igual a 3, procede con la combinación de caracteres. Mientras que en el segundo método ejecuta.
* Cuenta la cantidad de caracteres de cada variable (valor_texto1 y valor_texto2) con length() para saber si es menor a 3. Si es menor a 3, se procede a almacenar el resultado del length() en la variable longitud_texto.
* En la variable String (CombinadoSiempre) finalmente se procede la mezcla con el numero de caracteres que saco de cada palabra.
Prueba 1: parámetros con cadenas con mas de tres caracteres.
A los dos métodos les escribí las cadenas "PowerBuilder" y "VisualStudio".
Resultado:
¿Tiene lógica la respuesta?Si tiene lógica.. las dos cadenas de texto eran mayor de 3 caracteres ... condición del primer método Combinador (o Pegate ), mientras que en el segundo método (CombinadoSiempre), da igual la cantidad de caracteres que tenga, igual se ejecuta la mezcla.
Prueba 2:: parámetros con cadena de mas de 3 caracteres y otra con menos de 3.
A los dos métodos les escribí las cadenas "PowerBuilder" y "C#".
Resultado:
¿Tiene lógica la respuesta?Tambíen tiene lógica. En el primer método, como mi segunda cadena de caracteres tan solo tiene 2 letras, no se cumple la segunda condicion del if:
if (valor1.length() >= 3 &&
valor2.length() >= 3)
Consecuencia a esto, su return del "no aportar caracteres validos".
En el segundo método, todo se vale como ya sabemos... la mezcla va, porque va.
Prueba 3: Ambos parámetros con menos de 3 caracteres...
Creo que no hace falta ver... el resultado de esto es igual al anterior... el primer método devolvera "No aporta cadenas válidas", mientras que el segundo siempre combinara.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?
Pues si. Java considera los espacios como caracteres... el método CombinadoSiempre,
siempre va a combinar lo que le des como parámetro... hasta espacios.
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?
Nunca se usan los atributos... a mi clase si se ve bien, no le declare ni un atributo y funciona todo normal. El constructor, vi que siempre se le debe crear, no importa que este vació. La verdad, opino yo que los atributos declarados en esta clase
son inutiles ya que nunca se usan en ningún método...
Ruego y agradezco sus correcciones!!! mil gracias!