• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio con CDKeyoffer. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

Error al ejecutar en Java

Juan_Dev

Nuevo
Registrado
28 Feb 2016
Mensajes
21
Puntos
0
Edad
26
Hola de nuevo. Estoy aprendiendo Java y tengo un problema que no se como resolver. Resulta que he creado un String con mi nombre y lo que quiero hacer es saber cual es la primera letra y la última. Para ello empleo la funcion charAt y le indico la posicion 0, pero hago lo mismo para la posicion final el comando lenght y me muestra un error: Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 13

Alguien me ayuda????

Gracias delantando
 
La verdad es que no te has expresado con mucha claridad, pero al leer el error creo que sé dónde está el problema.

Supongo que te refieres a los métodos de la clase String. Se te está indicando que el índice indicando está fuera de rango, por lo que me temo que no estás tomando en cuenta que al usar el método charAt de la clase String, la primera posición parte del número cero. Lo primero que debes saber es que el método length de la clase String devuelve el número de letras que tiene la variable objeto que hayas creado, cuya primera letra parte del número uno, pero al usar el método charAt la primera letra que corresponde a la indicada por length es la de la posición cero.

Supongo que estás haciendo algo así: (Imaginando que tu nombre es Juan)

Código:
String mi_nombre = "Juan";
int mi_ultima_letra = mi_nombre.length();

System.out.println("Mi nombre tiene: " + mi_nombre.charAt(mi_ultima_letra);

Aquí es dónde te digo que charAt comienza desde la posición cero, por lo que la última posición de tu nombre sería la número tres, pero el método length le ha indicado que hay cuatro letras por lo que charAt está buscando la posición cuatro, que lógicamente no existe. De ahí viene tu error.

Lo que debes de hacer es modificar la última parte de la última línea del código ejemplo que te puse restándole una unidad:

Código:
System.out.println("Mi nombre tiene: " + mi_nombre.charAt(mi_ultima_letra - 1);

De esa manera puedes modificar el nombre que le hayas indicado a la variable objeto que siempre te mostrará la última letra correctamente.
 
entonces siempre hay que restar una unidad???
 
entonces siempre hay que restar una unidad???

Cómo te he explicado antes, debes restar una unidad por que el método length siempre partirá de la posición número uno, mientras que charAt parte de la posición número 0. ¿Entiendes?
 
creo que lo he entendido mas o menos

gracias
 
Pues te lo he explicado muy mascadito todo sinceramente xD

Lo mejor será que pruebes el código que te puse para que veas la diferencia.
 
Arriba