Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: ronal.d87 en 12 de Septiembre 2018, 06:23

Título: java.lang.StringIndexOutOfBoundsException: String index out of range CU00649B
Publicado por: ronal.d87 en 12 de Septiembre 2018, 06:23
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.
Título: Re:java.lang.StringIndexOutOfBoundsException: String index out of range CU00649B
Publicado por: Ogramar en 22 de Febrero 2019, 21:09
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