Hola Dan_SB!
Tu respuesta a este ejercicio cumple con lo requerido en el enunciado de este, no obstante podemos corregir y mejorar tu respuesta (código)
1ro: Siempre asegúrate de que el código de clase que publiques en los foros compile, para esto te recomiendo que una vez pegues el código en la web, lo copies desde la web y lo lleves a bluej nuevamente y lo compiles para comprobar que todo esta bien. En tu clase
Metodos te ha faltado la llave de cierre de clase
} por lo que tuve que incluirla para poder compilar la clase.
El enunciado pide que se cree una clase con un método main, tu decidiste crear 2 clases, esto no es ningún problema, lo que si te recomiendo es que a la hora de asignar un nombre de clase pienses en un nombre descriptivo a lo que es o a lo que hace dicha clase, un nombre de clase como
Metodos en lo personal no lo encuentro muy adecuado. Basándome en lo que hace la clase yo hubiese optado por un nombre de clase como:
AnalizarCadena (porque analiza su tamaño y su primera letra) o
AnalizarTexto ext..
En el metodo
Comprobacion de tu clase
Metodos tienes esta linea de codigo:
caracter = Lectura.Lectura();
No es recomendable duplicar palabras en una clase a menos de no ser muy necesario, tu has asignado el mismo nombre para un método y una variable. (Lectura) También debes de recordar que los nombres de clases es preferible que comiencen con una letra mayúscula, mientras que los nombres de variables y métodos deben de comenzar con una letra minúscula.
Con respecto a tu inquietud:
Aquí cree un método para lectura de cadenas de caracteres (String). Lo decidí colocar aquí para que el main tenga el menor código posible (no se si sea practico).
Un método main nunca tendrá mucho código siempre y cuando el código que implemente sea código necesario y prudente para dirigir el flujo o desarrollo del programa o código, así que no esta de mas que un método main tenga algunas lineas de código mas que solo las de crear una instancia de clase y llamar un método de dicha instancia.
Usar el método
matches en este ejercicio no es que este bien ni mal, esta bien porque es bueno siempre saber que mientras programamos podemos obtener un mismo resultado de diferentes maneras y es bueno poder tener ese dominio, pero también esta mal porque te has rendido al no poder hacerlo como lo pide el enunciado, estos ejercicios están elaborados afin de que el alumno o usuario use recursos aprendidos en unidades anteriores a la del ejercicio o recursos aprendidos en la misma unidad de este. Si puedes usar tanto los métodos
substring y
equals como el método
matches para resolver esto, pues esta todo bien, si solo lo puedes resolver usando el método
matches pues debes de esforzarte para dominarlo de ambas formas.
A continuación dejo una posible respuesta a este ejercicio, con algunos comentarios que te podrían ser útiles:
import java.util.Scanner;
public class AnalizarTexto
{
public static void main(String []args)
{
System.out.println(" Hola!\nPor favor introduce un texto\n");//El método main se encarga de saludar al usuario y dirige el programa
String cadena, primeraLetra;
Scanner sc = new Scanner(System.in);
cadena = sc.nextLine();//Aqui capturamos la cadena introducida por el usuario
primeraLetra = cadena.substring(0, 1);//Aqui capturamos la primera letra de la cadena de caracteres introducida
System.out.println("\fEl texto introducido es: " + cadena);
int numeroCaracteres = cadena.length();//Aqui capturamos la cantidad de caracteres
if(numeroCaracteres < 5 && primeraLetra.equals("a") || numeroCaracteres < 5 && primeraLetra.equals("A"))//Utilizamos el metodo equals
{
System.out.println("\nEl texto introducido consta de menos de 5 caracteres y comienza con la letra \"" + primeraLetra + "\".");
}
else if(numeroCaracteres < 5)
{
System.out.println("\nEl texto introducido consta de menos de 5 caracteres y no comienza con la letra \"" + "a/A" + "\".");
}
else if(numeroCaracteres >=5 && numeroCaracteres <=15 && primeraLetra.equalsIgnoreCase("a"))/*Utilizamos el metodo equalsIgnoreCase, este metodo evalua si
la letra es "a" o "A" solo pasandole como parametro la letra en cualquiera de sus dos estados (minuscula o mayuscula) */
{
System.out.println("\nEl texto introducido consta de entre 5 y 15 caracteres y comienza con la letra \"" + primeraLetra + "\".");
}
else if(numeroCaracteres >=5 && numeroCaracteres <=15)
{
System.out.println("\nEl texto introducido consta de entre 5 y 15 caracteres y no comienza con la letra \"" + "a/A" + "\".");
}
else if(numeroCaracteres >= 16 && primeraLetra.matches("a") || numeroCaracteres >= 16 && primeraLetra.matches("A"))//Utilizamos el metodo matches
{
System.out.println("\nEl texto introducido consta de " + numeroCaracteres + " caracteres y comienza con la letra \"" + primeraLetra + "\".");
}
else if(numeroCaracteres >=16)
{
System.out.println("\nEl texto introducido consta de " + numeroCaracteres + " caracteres y no comienza con la letra \"" + "a/A" + "\".");
}
else{}
}
}
Saludos!!