Hola jaivcaba,
Tu ejercicio aun siendo funcional, te comento algunos detalles.
En primer lugar he tenido que importar la clase Scanner al principio de la clase, pues no venía.
Que quiere decir esto, que envías una clase que no has probado (sin la importación de Scanner esta clase no funciona)
Que has eliminado la sentencia de la importación de Scanner sin darte cuenta ¿?
Si bien el uso del método charAt es válido y lícito, en esta entrega se pide el uso del método substring
Está bien que uses el método que te parezca idóneo para hacer el trabajo. Pero en ese caso, te sugiero que presentes el ejercicio tal como se pide (así demuestras que sabes hacerlo) y si quieres presentas tu versión modificada para que veamos otra forma de hacer el trabajo.
Tu ejercicio es un ejemplo perfecto del uso de if anidados (un if dentro de otro if).
El uso del if anidado tiene su utilidad cuando al cumplirse una condición, debemos tomar otra desición con otro if.
En este caso hay 6 sencencias if y 5 sentencias else.
Mira una versión usando if y else if
if (texto.length()< 5) {
condicionDice = "tiene menos de 5 caracteres";
} else if (texto.length()>=5 && texto.length() <=15) {
condicionDice = "tiene entre 5 y 15 caracteres";
} else {
condicionDice= "tiene mas de 15 caracteres";
}
if (primeraLetra == 'a') {
condicionDice += " y comienza por a";
} else {
condicionDice += " y no comienza por a";
}
En esta versión se usan 2 if, 1 else if y 2 else. Este código es más compacto, además es más facil de entender que el del if anidado.
Saludos