Calcular letra DNI
Enviado por Extratoz Extrato • 21 de Enero de 2017 • Trabajo • 1.269 Palabras (6 Páginas) • 275 Visitas
/**----------------------------------------------------------------
* Clase DNI
----------------------------------------------------------------*/
public class DNI {
// Atributos estáticos
// Cadena con las letras posibles del DNI ordenados para el cálculo de DNI
private static final String LETRAS_DNI= "TRWAGMYFPDXBNJZSQVHLCKE";
// Atributos de objeto
private int numDNI;
// Métodos
public String obtenerNIF () {
// Variables locales
String cadenaNIF; // NIF con letra para devolver
char letraNIF; // Letra del número de NIF calculado
// Cálculo de la letra del NIF
letraNIF= calcularLetraNIF (numDNI);
// Construcción de la cadena del DNI: número + letra
cadenaNIF= Integer.toString(numDNI) + String.valueOf(letraNIF);
// Devolución del resultado
return cadenaNIF;
}
public int obtenerDNI () {
return numDNI;
}
public void establecer (String nif) throws Exception {
if (DNI.validarNIF (nif)) { // Valor válido: lo almacenamos
this.numDNI= DNI.extraerNumeroNIF(nif);
}
else { // Valor inválido: lanzamos una excepción
throw new Exception ("NIF inválido: " + nif);
}
}
public void establecer (int dni) throws Exception {
// Comprobación de rangos
if (dni>999999 && dni<99999999) {
this.numDNI= dni; // Valor válido: lo almacenamos
}
else { // Valor inválido: lanzamos una excepción
throw new Exception ("DNI inválido: " + String.valueOf(dni));
}
}
private static char calcularLetraNIF (int dni) {
char letra;
// Cálculo de la letra NIF
letra= LETRAS_DNI.charAt(dni % 23);
// Devolución de la letra NIF
return letra;
}
private static char extraerLetraNIF (String nif) {
char letra= nif.charAt(nif.length()-1);
return letra;
}
private static int extraerNumeroNIF (String nif) {
...