Foro

Ayudita con JAVA

Otros lugares, otras opciones :: Sin clasificar :: Ayudita con JAVA

Este hilo ha sido cerrado.
12/12/2018, 19:23

Disculpad la pregunta, pero ¿alguien sabe como hacer un scanner que sólo admita letras y espacios (pero no números ni símbolos ni nada más)?
Estoy empezando en esto de la programación y en stack no encuentro una respuesta concreta.
Gracias.

12/12/2018, 21:39

Revisa la clase Character. Tiene entre otros los métodos isLetter y isWhitespace. Para recorrer el array had in for invocando el método chat(posición)

Al ser pregunta de novato creo que vas por aquí porque como te refieras a un scanner de documentos estás pegándole a algo muy avanzado

12/12/2018, 23:43

que va, voy por bucles y nada de lo que has puesto me suena, voy a buscarlo gracias.

13/12/2018, 09:23

Esta es la mejor ayuda que podré darte respecto a JAVA

https://www.gnu.org/philosophy/java-trap.es.html

De nada.

13/12/2018, 10:06

A ver, ahora que estoy delante de un ordenador puedo escribir como dios manda.

Si tienes un String puedes recorrerlo con el método CharAt(i) siendo i una posición desde 0 hasta el fin del string.

en tu caso te quedaría algo así como esto:

for (i=0; i < mi_string.length();i++){

    if (Character.isLetter(mi_string.charAt(i) || Character.isWhistespace(mi_string.charAt(i))

             "VAMOS BIEN"

    else

            "CARACTER CHUNGO"

}

Todos hemos empezado programando por aquí. Ánimo!

 

 

13/12/2018, 12:03

Gracias thewalking.miguel, había llegado a hacerlo con un bucle con un string y bucle de todo el alfabeto y un espacio  pero lo tuyo es más eficiente.

darofar, yo no escojo las asignaturas (y software libre  lo estoy tocando en sistemas.)

13/12/2018, 16:54

Lo que pone thewalking.miguel es correcto pero por si quieres hacerlo con otro grupo de caracteres no tan caracteristicos como letras podrías definir un array.

 

char[] alphabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n', 'ñ' ,'o','p','q','r','s','t','u','v','w','x','y','z'};

HashSet<String> alphabetSet = new HashSet<String>(Arrays.asList(alphabet));

if (alphabetSet .contains(Caracter))...

 

No lo comprobe y lo hice así rápido pero creo que debería funcionar y permitiendote por ejemplo si no quieres que se tengan en cuenta letras de otros alfabetos (cirilicas, arabes...) que el isLetter te las devuelve como caracteres validos si no recuerdo mal.

14/12/2018, 01:49

Al final lo he resuelto así, pero gracias por las indicaciones.

 

 

 public static void ej1() {
        Scanner lector = new Scanner(System.in);
        System.out.println("Introduce una cadena pero que solo se puedan introducir letras y espacios.");
        String cadena = lector.nextLine();
        String abecedario = "abcdefghijklmnopqrstuvwxyz ";
        int ini, ini2;

        
        int cont = 0;
        cadena = cadena.toLowerCase();
        for (ini = 0; ini < cadena.length(); ini++) {
            for (ini2 = 0; ini2 < abecedario.length(); ini2++) {
                if (cadena.charAt(ini) == abecedario.charAt(ini2)) {
                    cont++;
                }
            }
        }
        if (cont == cadena.length()) {
            System.out.println("True.");
        } else {
            System.out.println("False.");
        }
        System.out.println("");
        System.out.println("Fin del ejercicio. ");
 

Enmel
 
Carné Umbriano nº742
14/12/2018, 04:23

Sí quieres mejorarlo puedes investigar sobre las expresiones regulares ;) Es más sencillo. Ojalá las hubiera conocido antes. ¡Animo que a programar se aprende programando!

14/12/2018, 16:26

Sí quieres mejorarlo puedes investigar sobre las expresiones regulares ;) Es más sencillo.

 

Este hilo ha sido cerrado.