Esta es otra manera de verificar el rut en JAVA, mediante los try catch. El uso que se les da es de convertir el String a Integer,
pero, al haber algun caracter no numerico, produce un error de excepcion.
y va el codigo.
//permitira la verificacion del numero del rut retornando un valor boolean
public class VerificarRut {
String rut;
public VerificarRut(String rut){
this.rut=rut;
}
public boolean revisar(){
int lar = rut.length();
boolean flag =false;
if (lar>1){
String nrut; //se almacenara momentaniamente el numero de rut
String dig ; //se almacena el digito verificador
//el rut siempre tiene el ultimo digito como String
dig= rut.substring(lar-1,lar);
//se intentara con el resto del rut sin guion
nrut= rut.substring(0,lar-1);
try{
int nrorut = Integer.parseInt(nrut);//para procesar el numero del rut
rut=nrut+"-"+dig; //se agrega el guion para luego almacenar en la bd
}catch (Exception e){
nrut= rut.substring(0,lar-2);
try{
int nrorut = Integer.parseInt(nrut);//para procesar el numero del rut
}catch(Exception ex ){
return false;
}
}
//luego de obtener el numero de rut y el digito se procesa
lar = nrut.length();
int[] nro = new int[lar+1];
for(int i=0;i<lar;i++)
nro[i]= Integer.parseInt(nrut.substring(i,i+1));
int res =1;
for(int i=lar;i>-1;i--){
nro[i]= nro[i]*res++;
nro[lar]+=nro[i];
if (res>7)
res=2;
}
res=11-nro[lar]%11;
//se compara los resultados con el digito verificador
String dvr;
if (res==11){
dvr="0";
}else if (res==10){
dvr="K";
}else {
dvr=String.valueOf(res);
}
if (dvr.equalsIgnoreCase(dig))
flag=true;//rut correcto
}
return flag;
}
}
|