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

arcanFAC

  • Visitante
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);
    }
}



;) ;) ;)
« Última modificación: 11 de Abril 2015, 10:03 por Alex Rodríguez »

Marcos Martín

  • Sin experiencia
  • *
  • Mensajes: 11
    • Ver Perfil
Re:Aprender java.(CU00657B).Pedir datos en java por consola.
« Respuesta #1 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.

Daniel Arias

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Re:Cómo pedir datos en java por consola. Ejercicio CU00657B del tutorial
« Respuesta #2 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     

Marcos Martín

  • Sin experiencia
  • *
  • Mensajes: 11
    • Ver Perfil
Re:Cómo pedir datos en java por consola. Ejercicio CU00657B del tutorial
« Respuesta #3 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.

 

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