Open ivanjimenez opened 4 years ago
package unidad5; public class GestDni { private int numDNI; //private String numNIF; private static final String LETRAS_DNI= "TRWAGMYFPDXBNJZSQVHLCKE"; public int obtenerDNI() {return this.numDNI;} public String obtenerNIF() { char letra = calcularLetraNif(numDNI); return Integer.toString(numDNI)+letra; } public void establecer(int dni) throws Exception{ if (dni > 0 && dni < 99999999) { this.numDNI = dni; } else throw new Exception("DNI no válido" + dni); } public void establecer(String nif) throws Exception{ if (validarNIF(nif)) { this.numDNI = GestDni.extraerNumDni(nif); } else { throw new Exception("Nif no válido" + nif); } } private static char calcularLetraNif(int dni) { return LETRAS_DNI.charAt(dni % 23); } private static char extraerLetraNif(String nif) { return nif.charAt(nif.length()-1); } private static int extraerNumDni(String nif) { return Integer.parseInt(nif.substring(0,nif.length()-1)); } private boolean validarNIF(String nif){ int num = extraerNumDni(nif); char letra = extraerLetraNif(nif); boolean valido = true; if (nif == null) valido = false; else { if (letra == calcularLetraNif(num)) { valido = true; } else valido = false; } return valido; } public static void main(String[] args) throws Exception { GestDni dni = new GestDni(); dni.establecer("54235828B"); System.out.println(dni.obtenerDNI() +" "+dni.obtenerNIF()); } }