lunes, 5 de septiembre de 2016

Introducir un Dni correcto con la clase Pattern y la clase Matcher

Java presenta clases para las expresiones regulares. Una expresión regular es el que cierto dato o datos presenten una estructura predefinida. En este caso, para ver si un Dni es correcto se deberá de comprobar de que el número introducido por teclado contengan entre 7 u 8 números y al final una letra que pueda ser tanto en minúsculas como en mayúsculas.
Las clases en Java para la creación de una expresión regular son la clase Pattern y la clase Matcher.

Breve explicación de la clase Pattern y la clase Matcher.

La clase Pattern se utiliza para crear el patrón. Por ejemplo para establecer el patrón de un Dni (7-8 números y una letra final) se utilizaría la siguiente sentencia.
Pattern pat = Pattern.compile("[0-9]{7,8}[A-Za-z]");

La clase Matcher compara el patrón con la cadena. Contiene el método matches() que recibe como parámetro el String a validar y devuelve true si coincide con el patrón y false en caso contrario. Siguiendo con el ejemplo anterior el código continuaría de la siguiente forma:
Matcher mat = pat.matcher("4258965P");

El objeto mat devolverá true porque sí que cumple con el patrón ya que tiene 7 números y un letra.

Bien, ahora veamos el código del programa completo para que funcione tal cual hemos descrito:

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import java.util.Scanner;



public class DniCorrecto {

    public static void main(String[] args) {

        String dniIntroducido = null;

        Scanner miScanner = new Scanner(System.in);

        Pattern pat = Pattern.compile("[0-9]{7,8}[A-Z a-z]");

         //Matcher mat = pat.matcher(dniIntroducido);

       

        System.out.print("Introduce un Dni correcto: ");

       

        dniIntroducido = miScanner.nextLine();

        Matcher mat = pat.matcher(dniIntroducido);

       while(!mat.matches()){

           System.out.println("El Dni introducido es incorrecto, por favor "

                   + "introduzca un Dni válido.");

           System.out.print("Introduce un Dni correcto:");

           dniIntroducido = miScanner.nextLine();

           mat = pat.matcher(dniIntroducido);

       }

        System.out.println("Bien, el Dni " + dniIntroducido + " es un Dni válido");

    }

}

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...