Autor Tema: java.lang.StringIndexOutOfBoundsException: String index out of range CU00649B  (Leído 2132 veces)

ronal.d87

  • Principiante
  • **
  • Mensajes: 72
    • Ver Perfil
Respuesta al ejercicio CU00649B del tutorial pdf de programación java.

Citar
Crea una clase (ponle el nombre que quieras) que carezca de atributos y cuyo constructor esté vacío. En dicha clase debe existir un método tipo función que reciba 3 cadenas de texto y devuelva la cadena de texto combinación de: las dos primeras letras de la primera cadena, seguidas por un espacio en blanco, seguidas de las cuatro primeras letras de la segunda cadena, seguidas de un guión medio y seguido de las 6 primeras letras de la tercera cadena.

He aquí el desarrollo del ejercicio:

Código: [Seleccionar]

package ejemplo01;

/**
 *
 * @author Ronnie
 */
public class CaracteresCU00649B {

    public CaracteresCU00649B() {
    }   
    public String cadenero(String cadena1, String cadena2, String cadena3){
        String receptor = "",c1 = "", c2 = "",c3 = "";
       
        c1 = cadena1.substring(0, 2);
        c2 = cadena2.substring(0, 4);
        c3 = cadena3.substring(0, 6);   
        System.out.println("La combinacion es: "+c1+" "+c2+"-"+c3);
        return receptor;
    }
    public static void main(String[] args) {
        CaracteresCU00649B caracteres = new CaracteresCU00649B();
        caracteres.cadenero("Casa", "Construcciones", "Remodelaciones");
    }
}

Tengo una duda, en caso tal que la cadena Casa fuese menor que los valores requeridos por el metodo substring ¿como se manejaria ese error? gracias, estoy atento a su respuesta.
« Última modificación: 22 de Febrero 2019, 21:04 por Ogramar »
Ronald Mosquera Mancilla

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas, este ejercicio no cumple con lo que se pedía en el enunciado. El método está devolviendo una cadena de tipo "La combinacion es: Ca Cons-Remode
" cuando lo que se pedía era que devolviera "Ca Cons-Remode"

No era necesario incluir un método main (en el programa del curso aún no se ha explicado el main). Y en caso de incluirlo, es preferible hacerlo en una clase aparte.

En este otro hilo puede verse una solución correcta: https://aprenderaprogramar.com/foros/index.php?topic=1258.0

Si la cadena Casa fuese menor que los valores requeridos por el metodo substring se produce un error java.lang.StringIndexOutOfBoundsException: String index out of range, que viene a decir que se está tratando manipular un elemento de un String con un índice que no existe para dicho String. Por ejemplo el String "Casa" tiene como elemento 0 la C, como elemento 1 la a, como elemento 2 la s y como elemento 3 la a final. Si tratáramos de manipular el carácter 7 obtendríamos un error: no existe ese índice. Esto podríamos controlarlo con un if (explicado en la entrega CU00636B), o mediante manejo de excepciones con try-catch (explicado en la entrega CU00927C del curso avanzado de Java). Para este ejercicio no es necesario tener en cuenta ese tipo de situaciones, es decir, suponemos que siempre se recibe una cadena de longitud correcta.

Salu2

 

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".