Jump to content

Validacion JAVA


Recommended Posts

Uta compa no me manejo en Java , pero e hecho cosas parecidas en otros lenguajes, por ejemplo, cuento el largo de la variable rut, si esta es igual a nueve, extraigo los primero 8 digitos en una nueva variable, y el digito numero nuevo lo paso a una variable dv, luego las "pego" onda digitos.guion.dv y hago la consulta y un rut con 10 digitos lo mismo , si tiene mas o menos caracteres no los dejo pasar, Sorry por el "super ejemplo" :tonto: pero realmente no cacho Java, pero espero que te sirva por lo menos mi comentario,salUdos.

Link to comment
Share on other sites

Tienen toda la razón así lo voy a a hacer, y si lo leo como String luego hago un rut.length()==11 es porque tiene dos punto (11.111.111-1) y entra a la condición lo estoy haciendo para que no me tire ningún error osea si lo ingresan sin untos pasa si lo ingresan con un punto pasa también si lo ingresan con los dos puntos también verifica si es valido pero si me ingresaban un largo de caracteres ==11 11111111111 y sin guion ahí pasaba a la condición pero ahí se me caía ahí les aviso como me fue

 

 

MUCHAS GRACIAS

Edited by PabloDag
Link to comment
Share on other sites

hola, tabién puedes usar lo siguiente:

 

String rut_a = 12.345.678-9
String rut_b = 12345678-9

String rut_resultante;

rut_resultante = rut_a.replace( "." , "" );
// rut_resultante ahora contiene "12345678-9"

rut_resultante = rut_b.replace( "." , "" );
// rut_resultante ahora contiene "12345678-9"

 

como puedes ver el resultado es el mismo para los dos casos, lo que hace replace es buscar el caracter indicado en el primer argumento (puede ser un caractér o una cadena) y reemplazarlo por el segundo argumento (puede ser un caractér o una cadena, en este caso una cadena vacía que borra de tu string la cadena indicada en el primer argumento), si no lo encuentra lo deja como está. Este método es conveniente para que no haya error incluso si puso el primer punto y no el segundo.

 

Puedes hacer lo mismo si quisieras dejar independiente del guión.

 

Después que hayas quitado puntos y/o el guión, puedes hacer con toda tranquilodad la validación de la longitud del string resultante porque todos serán iguale en longitud independiente de si el usuario puso o no los puntos o el guión.

Edited by xchanox
Link to comment
Share on other sites

Si estuve viendo y tienes razon... es mucho mejor eso que un StringTokenizer ya que tengo muchos if en cambio con eso me saltaria carios lo que si nose como hacerlo para que no entre a las condiciones si no tiene guion lo que hice fue lo siguiente:

for (int i=0;i<d.length();i++)//aqui recorre el string que le ingresan
        if(!d.substring(i,i+1).equals("-")){//pregunta por el guion y si no esta
            System.out.print("Ingrese rut nuevamente: ");//muestra esto en pantalla
        }

 

pero me tira esto en pantalla

 

Ingrese rut nuevamente: Ingrese rut nuevamente: Ingrese rut nuevamente: Ingrese rut nuevamente: Ingrese rut nuevamente: Ingrese rut nuevamente: Ingrese rut nuevamente: Ingrese rut nuevamente: Ingrese rut nuevamente: Rut con sobra de caracteres

 

 

y la condiciones que le doy son las siguientes:

if(rut.length()<10 && rut.length()>12){
    System.out.print("Rut Invalido intentelo nuevamente");



else if(rut.length()==12){//11.111.111-4 eso quiere decir ==12 con 2 puntos
        StringTokenizer rut1=new StringTokenizer(rut,".");//aqui quito los puntos
        String rut2="";
        rut2=rut1.nextToken();
        rut2=rut2.concat(rut1.nextToken());
        rut2=rut2.concat(rut1.nextToken());
String[] cadena = rut2.split("-");






else
    if(rut.length()==10)//aqui en el caso que no tenga puntos 11111111-1
{
    String[] cadena = rut.split("-");//aqui le quito el quion






else
    if(rut.length()==11){//aqui en el caso de que pongan un solo punto en cualquier lugar
        StringTokenizer rut1=new StringTokenizer(rut,".");
        String rut2="";
        rut2=rut1.nextToken();
        rut2=rut2.concat(rut1.nextToken());

        String[] cadena = rut2.split("-");

 

El programa se cae si no le ingresan con rut, con lo que tu dices xchanox al parecer es mas facil pero aun asi se me caeria si no me ingresan el guion

 

GRACIAS DE TODAS MANERAS

Edited by PabloDag
Link to comment
Share on other sites

pusha encuentro que te estas ahogando en una gota de agua,

mira googleando encontre este metodo, siempre he sido de la idea que si la rueda

esta inventada, hay que ocuparla no inventarla denuevo.

 


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

 

que resive como parametro el rut y el digito verificador

tira a sacarle los puntos y el guion como dijero ahi arriba

y lo tiras a este metodo

 

ten encuenta que los rut no son solamente de los 10 millones en adelante

hay 5 millines hay 100 mil y 25 mil xD tienes que tener esos casos, saludos.

 

Edited by wtfbenja
Link to comment
Share on other sites

yo lo hice en c# ojala te sirva

 

private string digitoverificador(int rut)

{

int digito;

int contador;

int multiplo;

int acumulador;

string rutdigito;

contador = 2;

acumulador = 0;

while (rut != 0)

{

multiplo = (rut % 10) * contador;

acumulador = acumulador + multiplo;

rut = rut / 10;

contador = contador + 1;

if (contador == 8)

{

contador = 2;

}

}

digito = 11 - (acumulador % 11);

rutdigito = digito.ToString().Trim();

if (digito == 10)

{

rutdigito = "K";

 

}

if (digito == 11)

{

rutdigito = "0";

}

return (rutdigito);

}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...