Jump to content

Ayuda con Rut en Java(BlueJ)


Recommended Posts

hola necesito ayuda para una clase rut que tengo que hacer en bluej.

lo que tengo que hacer es que al rut ingresado tengo que mostrarlo por pantalla con los puntos y el guion.

y eso no se como hacerlo.

esto es lo que llevo hasta el momento

se agradece cualquier ayuda.

 

 

import java.io.*;

 

public class ValidaRut

{

private int rut;

private String dv;

 

public ValidaRut(int rut,String dv)

{

this.rut=rut;

this.dv=dv;

}

 

public int getRut()

{

return rut;

}

public String getDv()

{

return dv;

}

 

public void setRut (int rut)

{

this.rut=rut;

}

public void setDv(String dv)

{

this.dv=dv;

}

public void leeRut() throws IOException

{

InputStreamReader isr=new InputStreamReader(System.in);

BufferedReader in=new BufferedReader(isr);

System.out.print("Ingrese su rut : ");

setRut(Integer.parseInt(in.readLine()));

System.out.print("Ingrese su dv : ");

setDv(in.readLine());

}

public boolean validarRut()

{

int numero=rut;

int r=0;

int suma=0;

int contador=2;

while (numero>0)

{

r=numero%10;

suma=suma + r*contador;

contador++;

if (contador>7)

{

contador=2;

}

numero=numero/10;

}

//System.out.println("la suma es: "+suma);

r=11-suma%11;

String dvo="";

if (r==11)

{

dvo="0";

}

else

{

if (r==10)

{

dvo="K";

}

else

{

dvo=""+r;

}

}

if (dv.equalsIgnoreCase(dvo))

{

return true;

}

else

{

return false;

}

//return true;

}

}

Link to comment
Share on other sites

:mmm: No sé si tu clase estará bien estructurada, pero igual aquí dejo un método que no tengo idea si funciona :nose: (no tengo instalado el JDK ni ningún IDE para Java):

static public String getRUTstring(int rut, String dv)
{
  NumberFormat nf;

  nf = NumberFormat.getNumberInstance(new Locale("es","CL"));
  return (nf.format(rut) + "-" + dv);
}

Quizás tengas que convertir el método a un método de instancia (no estático) y quitarle los parámetros (usaría los atributos de la clase).

 

Además:

if (dv.equalsIgnoreCase(dvo))
{
  return true;
}
else
{
  return false;
}

...¿no sería mejor escribirlo así?:

  return dv.equalsIgnoreCase(dvo);

 

Otra cosa, creo que el dígito verficador debería ser de tipo char.

Edited by susodicho
Link to comment
Share on other sites

  • 1 month later...

el ultimo return true no deveria estar como cmentario //true...el ultimo if deveria ser asi...........if(dvo.equalsIgnoreCase(dv))..... no tengo el codigo a mano pero tienes que usar el metodo length, y trabajar son substring...con el metodo length sabras el largo del String y lo podras cortar el string en varios substring...

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...