Autor Tema: Ejemplo (CU00650B) Método length de la clase String del API de Java.  (Leído 3689 veces)

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
El enunciado del ejemplo pedía;

Valiéndonos de este método, intenta escribir tu propio código para hacer lo siguiente:

a) Reescribir la clase Combinador que usamos anteriormente de forma que el método combinacion devuelva “No aporta cadenas válidas” si se le pasa como parámetro alguna cadena que contenga menos de tres caracteres.

b) Escribir un nuevo método de la clase, al que podemos denominar combinadoSiempre  que en caso de que se pasen cadenas con menos de tres caracteres, las combine de todas formas en base a los caracteres disponibles, sea el número que sea.

Donde dice en el ejemplo b las combine de todas formas, he entendido que haga uniones de dos caracteres con todas las opciones que sean posibles, y lo hice adaptado a los caracteres que fueran. Ejemplo si pasas "abc" "def"... crea "ad","ae",af","bd"....

Ejercicio para evaluación

Código: [Seleccionar]
public class CombinaCadenas{

    public CombinaCadenas(){
        //vacío sin atributos de clase
    }

    //Método para combinar palabras pasadas por parámetro String que solo tengan tamaño mayor a 3 letras controlando no validas sino.

    public String combinadorCadenas(String palabra1, String palabra2, String palabra3){

        //Atributos para calcular tamaño de las palabras pasadas
        int longitud1 = palabra1.length();
        int longitud2 = palabra2.length();
        int longitud3 = palabra3.length();

        if(longitud1 > 2 && longitud2 > 2 && longitud3 > 2){
            return palabra1.substring(0,3) + " " + palabra2.substring(0,3) + "-" + palabra3.substring(0,3);
        }else {return "No aporta cadenas válidas";}

    }

    //Método para combinar palabras sea cual sea el tamaño de estas

    public String combinaSiempre(String palabra1, String palabra2, String palabra3){

        // Atributos de longitud de las palabras
        int longitud1 = palabra1.length();
        int longitud2 = palabra2.length();
        int longitud3 = palabra3.length();

        //Atributo cadena que retornaremos en el metodo
        String cadena="";

        if (longitud1<3){
            cadena=cadena + palabra1.substring(0,longitud1);} else{
            cadena=cadena + palabra1.substring(0,3);}
        if (longitud2<3){
            cadena=cadena + " " + palabra2.substring(0,longitud2);} else{
            cadena=cadena + " " + palabra2.substring(0,3);}
        if (longitud3<3){
            cadena=cadena+ " " + palabra3.substring(0,longitud3);} else{
            cadena=cadena+ " " + palabra3.substring(0,3);}

        return cadena;
    }

    //Método para combinar las palabras entre sí en todas las opciones posibles de dos caracteres (me faltaria repetir el bucle empezando por la segunda introducida)

    public String combinaLetras(String palabra1, String palabra2){
        //String resultante para return
        String cadena="";
        //Atributos de metodo para calcular tamaño de palabras
        int longitud1 = palabra1.length();
        int longitud2 = palabra2.length();

        if (longitud1<3 && longitud2<3){ //Combinador de palabras con menos de dos letras, aunque sirve para cualquier longitud de tamaño
            for(int x=0;x<longitud1;x++){

                for(int y=0;y<longitud2;y++){

                    cadena=cadena + palabra1.substring(x,x+1) + palabra2.substring(y,y+1) + " ";

                }

            }

            for(int x=0;x<longitud1;x++){

                for(int y=0;y<longitud2;y++){
                    cadena=cadena + palabra2.substring(y,y+1) + palabra1.substring(x,x+1) + " ";

                }

            }
        }

        return cadena;
    }

   
}




Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
EJERCICIO CU00650B Método length de la clase String del API de Java
« Respuesta #1 en: 20 de Marzo 2015, 18:20 »
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?

He hecho un System.out.println(valorTexto1.substring(0,0); y devuelve una cadena vacía, no salta ninguna excepción o error.
Así pues el resultado, un "espacio", es coherente con el código.
Si se quisiera controlar el no pasar cadenas vacías solo habría que poner un if(valorTexto1.length()=0) return "cadena vacia no".


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?

No, no tienen utilidad ninguna, pues los Strings que se usan dentro del método son los definido en el encabezado del mismo (String valor_texto1) y no los inicializados y declarados en la clase, deberian quitarse.


También he detectado que los métodos, en el texto, están en mayúscula, es un error o tiene que ver algo que sean de la Clase String?

/Método que combina las tres primeras letras de cada cadena

    String Combinacion (String valor_texto1, String valor_texto2) {

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Hola Lorenzo

Has presentado dos mensajes para este ejercicio.
Si lo has hecho porque ya hacía tiempo que habías presentado el primero.  No hay problema.
Si entras a leer tu mensaje, verás que hay disponible un botón 'Modificar'. al pulsarlo, puedes editar tu propio mensaje.
Esta opción está disponible para esto.
O bien, usa el botón responder y añade el segundo mensaje en el mismo hilo.

De momento los he unido en el mismo hilo.


Respecto al código. Nada que objetar al contrario, has hecho más de lo que se pedía con tu método combinaLetras(...). Muy original.
Mezclar las letras de las dos palabras.

Respecto al segundo mensaje.
Si, tal como dices el 'espacio en blanco' es coherente con el código.
Y también como dices los atributos no usados, pueden eliminarse.

Citar
También he detectado que los métodos, en el texto, están en mayúscula, es un error o tiene que ver algo que sean de la Clase String?
Si Lorenzo, es un error que ha colado.
En el código de la clase Combinador sobre fondo gris en la entrega CU00650B:
    String Combinacion (String valor_texto1, String valor_texto2)  {...}
    String CombinadoSiempre (String valor_texto1, String valor_texto2)  {...}
    String CombinadoSiempre = ""; //Cadena vacía, variable local

Formalmente debía ser:
    String combinacion (String valor_texto1, String valor_texto2)  {...}
    String combinadoSiempre (String valor_texto1, String valor_texto2)  {...}
    String combinadoSiempre = ""; //Cadena vacía, variable local

Cambiando las iniciales a minúscula como proclama la convención de nombres. Y si queremos ser puristas, tal vez declarar los métodos como public.

Gracias por avisar Lorenzo.


Desde aquí hago un llamamiento al departamento de mantenimiento para que tome nota a fin de realizar las rectificaciones oportunas.

Saludos

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
No, no me equivoqué, o al menos no sabía que debia juntarlos, el primer código o email es la práctica, el segundo es el ejercicio evaluable propiamente dicho.

Si he de ponerlos juntos, en el futuro lo tendre en cuenta toni, gracias por los comentarios como siempre.

Sí, lo de public tb me di cuenta, al no declararlos public, por defecto son publicos a otras clases?
« Última modificación: 20 de Marzo 2015, 23:19 por Lorenzo31 »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".