Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: arcanFAC en 30 de Marzo 2015, 22:15

Título: java.lang.StringIndexOutOfBoundsException: String index out of range CU00657B
Publicado por: arcanFAC en 30 de Marzo 2015, 22:15
Hola, aquí les dejo este ejercicio resuelto para que me digan como les parece  ??? ???

Citar
Crea una clase con un método main que pida una entrada de teclado y usando condicionales, el método length de la clase String y el método substring de la clase String, muestre un mensaje indicando:

a) Si la cadena introducida tiene menos de 5 caracteres, entre 5 y 15 caracteres o más de 15 caracteres.

b) Si la cadena introducida comienza por la letra a.

Ejemplo: se pide la entrada y el usuario introduce “vereda”. Por pantalla se debe mostrar: “La cadena introducida tiene entre 5 y 15 caracteres y no comienza por a”.


Código: [Seleccionar]
import java.util.Scanner;
public class Ejemplo{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String total, cadena, comienza;
        System.out.println("Por favor ingrese una cadena por teclado");
        String mensaje = sc.nextLine();
        cadena = "La cadena introducida tiene";
        if(mensaje.length() < 5){total = " menos de 5 caracteres";}
        else if(mensaje.length() >=5 && mensaje.length() <= 15){total = " entre 5 y 15 caracteres";}
        else{total = " más de 15 caracteres";}
        if("a".equals(mensaje.substring(0, 1))){comienza = " y comienza por a";}
        else{comienza = " y no comienza por a";}
        System.out.println(cadena +  total + comienza);
    }
}



;) ;) ;)
Título: Re:Aprender java.(CU00657B).Pedir datos en java por consola.
Publicado por: Marcos Martín en 31 de Marzo 2015, 11:03
Hola arcanFAC.

Tu ejercicio está muy bien.

Como matiz , se debe inicializar las variables que se declaran , como es el caso de las variables del tipo String total = ""; cadena = ""; y comienza= "";

Te ánimo a seguir adelante con el curso.

Un saludo.
Título: Re:Cómo pedir datos en java por consola. Ejercicio CU00657B del tutorial
Publicado por: Daniel Arias en 10 de Abril 2015, 14:09
Buen dia Marcos,

he seguido el código para resolver el ejercicio y cuando ingreso una cadena vacía genera el siguiente error

java.lang.StringIndexOutOfBoundsException: String index out of range: 1
   at java.lang.String.substring(String.java:1951)
   at EjemploMain1.main(EjemploMain1.java:22)

Sabes porque se presenta este error, no se da al momento de compilar sino cuando ingreso una cadena vacía

Gracias por tu ayuda

Daniel Arias     
Título: Re:Cómo pedir datos en java por consola. Ejercicio CU00657B del tutorial
Publicado por: Marcos Martín en 10 de Abril 2015, 16:03
Hola Daniel.

Esto erro lo da Java en tiempo de ejecucion , porque al NO escribir nada, cuando el programa espera recibir un string lo da como error, esto más adelante en tratamiento de exceptions o errores sería un error a "atrapar" con la sentencia try - catch.

Y lo da porque luego con ese String que el programa espera, intenta manipularlo con el metodo substring.

Espero haberte ayudao, no obstante unas lecciones más adelante te explican porque pasa esto y como solucionarlo.

Este programa básico no está preparado para recibir un String vacio.

Un saludo.