Java - ingresar solo letras y no números

 
Vista:

ingresar solo letras y no números

Publicado por jessica (1 intervención) el 06/01/2019 23:39:58
alguien me puede ayudar con lo siguiente necesito ingresar solo letras y no números ..gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

ingresar solo letras y no números

Publicado por Kabuto (1381 intervenciones) el 07/01/2019 00:28:35
Hola. ¿Podrías ser más específica?

¿Tienes que validar cadenas enteras solo con letras?

¿Tienes que validar caracter a caracter segun se teclea?

¿Tienes tan solo que rechazar el valor introducido o has de programar una excepción?


En cualquier caso, te dejo un pequeño programa de ejemplo, donde uso un método para comprobar si una cadena introducida tiene solo letras o no.
Para ello, lo que haga es recorrer cada caracter de la cadena y comprueba si su correspondiente código ASCII corresponde al de letras o no.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public class SoloLetras {
 
	/**
	 * Metodo para comprobar si los caracteres introducidos en una cadena son
	 * SOLO letras o no.
	 * @param cadena String a comprobar
	 * @return true si solo contiene letras, false en caso contrario
	 */
	static boolean esSoloLetras(String cadena)
	{
		//Recorremos cada caracter de la cadena y comprobamos si son letras.
		//Para comprobarlo, lo pasamos a mayuscula y consultamos su numero ASCII.
		//Si está fuera del rango 65 - 90, es que NO son letras.
		//Para ser más exactos al tratarse del idioma español, tambien comprobamos
		//el valor 165 equivalente a la Ñ
 
		for (int i = 0; i < cadena.length(); i++)
		{
			char caracter = cadena.toUpperCase().charAt(i);
			int valorASCII = (int)caracter;
			if (valorASCII != 165 && (valorASCII < 65 || valorASCII > 90))
				return false; //Se ha encontrado un caracter que no es letra
		}
 
		//Terminado el bucle sin que se haya retornado false, es que todos los caracteres son letras
		return true;
	}
 
	public static void main(String[] args) {
		Scanner teclado = new Scanner(System.in);
 
		String cadena = " ";
 
		while (!cadena.isEmpty())
		{
			System.out.print("Introduzca cadena a comprobar (Cadena vacia = FIN): ");
			cadena = teclado.nextLine();
			if (esSoloLetras(cadena))
				System.out.println("La cadena SOLO contiene letras\n");
			else
				System.out.println("La cadena tiene caracteres que NO son letras\n");
		}
 
		System.out.println("\n\t\tFIN DE PROGRAMA");
		teclado.close();
 
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

ingresar solo letras y no números

Publicado por Kabuto (1381 intervenciones) el 07/01/2019 00:56:01
Ya puestos, te dejo una versión modificada, donde esta vez se genera una excepcion si se encuentran caracteres que NO sean letras en la cadena introducida:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
public class SoloLetras {
 
	/**
	 * Metodo para comprobar si los caracteres introducidos en una cadena son
	 * SOLO letras o no.
	 * @param cadena String a comprobar
	 * @return true si solo contiene letras, false en caso contrario
	 */
	static boolean esSoloLetras(String cadena)
	{
		//Recorremos cada caracter de la cadena y comprobamos si son letras.
		//Para comprobarlo, lo pasamos a mayuscula y consultamos su numero ASCII.
		//Si está fuera del rango 65 - 90, es que NO son letras.
		//Para ser más exactos al tratarse del idioma español, tambien comprobamos
		//el valor 165 equivalente a la Ñ
 
		for (int i = 0; i < cadena.length(); i++)
		{
			char caracter = cadena.toUpperCase().charAt(i);
			int valorASCII = (int)caracter;
			if (valorASCII != 165 && (valorASCII < 65 || valorASCII > 90))
				return false; //Se ha encontrado un caracter que no es letra
		}
 
		//Terminado el bucle sin que se hay retornado false, es que todos los caracteres son letras
		return true;
	}
 
	/**
	 * Sencilla clase que hereda de Exception para crear una excepcion
	 * que avise en el caso de que la cadena contenga caracteres que no son letras
	 */
	static class NoEsLetraExcepcion extends Exception{
 
		public NoEsLetraExcepcion(String mensajeExcepcion) {
			super(mensajeExcepcion);
		}
 
	}
 
	/**
	 * Metodo que pide cadenas al usuario y comprueba si contiene solo letras o no.
	 * @return String introducido por el usuario que solo contenga letras o que sea cadena vacía.
	 * @throws NoEsLetraExcepcion Excepcion en el caso de encontrar caracteres que no sean letras.
	 */
	static String pedirCadenaLetras() throws NoEsLetraExcepcion
	{
		Scanner teclado = new Scanner(System.in);
		String cadena = teclado.nextLine();
		if (esSoloLetras(cadena) || cadena.isEmpty()) //Para este caso, aceptamos cadena vacía como válida
			return cadena;
		else
			throw new NoEsLetraExcepcion("La cadena contiene caracteres que NO son letras");
	}
 
	public static void main(String[] args) {
 
		String cadena = " ";
 
		while (!cadena.isEmpty())
		{
			System.out.print("Introduzca cadena a comprobar (Cadena vacia = FIN): ");
			//Pedimos cadenas usando nuestro método que lanzará excepcion si encuentra caracteres
			//que no sean letras.
			try {
				cadena = pedirCadenaLetras();
				if (!cadena.isEmpty())
					System.out.println("La cadena contiene SOLO letras\n");
			}catch(NoEsLetraExcepcion ex) {
				System.out.println(ex.getMessage() + "\n");
			}
		}
 
		System.out.println("\n\t\tFIN DE PROGRAMA");
 
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
4
Comentar

ingresar solo letras y no números

Publicado por Ricardo (1 intervención) el 13/12/2019 19:38:40
¡Eres un crack hermano!, me resolviste una gran duda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ingresar solo letras y no números

Publicado por Jose (1 intervención) el 27/03/2020 04:16:48
Muy clara tu explicacion, tengo una inquietud como seria la programaciond para validar caracter a caracter segun se teclea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

ingresar solo letras y no números

Publicado por Kabuto (1381 intervenciones) el 27/03/2020 16:47:18
Si estamos trabajando en la consola, como en el ejemplo anterior, no se puede, o al menos yo no sabría como hacerlo.

Si estuviéramos trabajando ya en una interfaz Swing, o sea, un formulario con ventana, cuadros de texto, botones, etc.. entonces se puede usar la clase KeyListener para detectar cuándo se pulsa una tecla y en ese instante recoger el carácter tecleado y según si lo consideramos válido, podemos aceptarlo o rechazarlo de manera que ni siquiera aparezca "typeado" en pantalla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar