Inicio > Programación, java > Generador de Rut y Validador

Generador de Rut y Validador

Thursday, 22 de January de 2009

Muchos han esatdo buscando  una forma de validar si un RUT es válido o no, pero también hay muchos que necesitan probar sus aplicaciones y están usando sus propios RUTs, pero ¿qué pasa cuando necesitas hacer una prueba masivamente?, acá te traigo la solución...

El primer método te devolverá un char con el texto del dígito verificador al RUT que se recibe por parámetro, pero, ¿por qué devuelve char?, fácil, el dígito verificador puede ser una "K", por lo que se devuelve como código ASCII del carácter correspondiente.

Por ejemplo

JAVA:
  1. (char)45 //- eso corresponde a cero 0
  2.  
  3. (char)75 //- eso corresponde a K

Acá el método que me devuelve el Dígito Verificador.

JAVA:
  1. public char obtieneDV(int rut) {
  2. int m = 0, s = 1;
  3. for (; rut != 0; rut /= 10) {
  4. s = (s + rut % 10 * (9 - m++ % 6)) % 11;
  5. }
  6. return (char) (s != 0 ? s + 47 : 75);
  7. }

El método es super sencillo, pero necesitamos probarlo. Para esto vamos a hacer un for que me genere números al azar que haremos pasar por RUTs y obtendremos el dígito verificador que corresponda, si bien, muchos de estos RUTs no serán reales, sí serán validos y nos servirtán para testear nuestra aplicación.

JAVA:
  1. public void metodoCualquiera() {
  2.  
  3. for(int i=0; i<100; i++){
  4. int rut = (int) (Math.random()*30000000+10000000);
  5. GWT.log("RUT :"+String.valueOf(rut)+"-"+obtieneDV(rut), null);
  6. System.out.println(String.valueOf(rut)+"-"+obtieneDV(rut));
  7. }
  8. }
  9.  
  10. public char obtieneDV(int rut) {
  11. int m = 0, s = 1;
  12. for (; rut != 0; rut /= 10) {
  13. s = (s + rut % 10 * (9 - m++ % 6)) % 11;
  14. }
  15. return (char) (s != 0 ? s + 47 : 75);
  16. }

Así tendremos una consola con 100 RUTs totalmente válidos y útiles al momento de hacer testing.

Para los que también necesiten un validador de RUT.

Este método es parecido al anterior, sólo que recibe un parámetro má, el DV, así calcula el DV que corresponde al RUT introducido y lo compara con el DV que nosotros le proporcionamos, nos devolverá un "true" en caso de ser iguales y un "false" en caso de no corresponder.

JAVA:
  1. public boolean verificarRut(int rut, char dv) {
  2. int m = 0, s = 1;
  3. for (; rut != 0; rut /= 10) {
  4. s = (s + rut % 10 * (9 - m++ % 6)) % 11;
  5. }
  6. return dv == (char) (s != 0 ? s + 47 : 75);
  7. }

VN:F [1.0.9_379]
Rating: 1.0/10 (1 voto cast)


Comparte esto en :Enviar a Apezz
Ancelot Programación, java , , , , , , ,

  1. Monday, 21 de June de 2010 a las 18:31 | #1

    :plop: :oo: :o_o: :mrgreen: :jaja: :jaja: :o_o: :P

    VA:F [1.0.9_379]
  2. Monday, 21 de June de 2010 a las 18:32 | #2

    :brr:

    VA:F [1.0.9_379]
Comentarios cerrados.