Crea una clase NIF que represente el DNI con su
correspondiente letra. Los atributos de la clase serán
el número de DNI y su letra.
La clase NIF dispondrá de
los siguientes métodos:
Un constructor por defecto.
Un constructor que reciba como parámetro el DNI y calcule y asigne la letra que le
corresponde.
Un método leer(): que pida por teclado el
número de DNI y calcule a partir del DNI introducido la letra
que le corresponde.
Método toString() que muestre el NIF de
la siguiente forma: ocho dígitos, un guión y la letra en mayúscula.
Por ejemplo: 12345678-Z
Método para obtener la letra del NIF:
La letra del NIF se calculará usando
un método privado. La forma de obtener la letra del NIF es la
siguiente:
Se obtiene el resto de la división
entera del número de DNI entre 23 y se usa la siguiente tabla para
obtener la letra que corresponde:
0 - T 1 - R 2 - W 3 - A 4 - G
5 – M
6 – Y 7 – F 8 – P 9 - D 10 – X 11 – B
12 – N 13 – J
14 – Z 15 – S 16 - Q
17 - V
18 - H 19 - L
20 – C 21 – K
22 – E
Una vez creada la clase, escribe un
programa para probarla.
Solución:
//Clase NIF
import java.util.Scanner;
public class Nif {
private int dni;
private char letra;
//Constructores
public Nif() {
}
public Nif(int dni) {
this.dni = dni;
letra = calcularLetra();
}
//Método para calcular la letra del NIF
private char calcularLetra() {
char[] letras = {'T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X',
'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'};
return letras[dni % 23];
}
//Método para leer por teclado el número de DNI y calcular la letra
public void leer() {
Scanner sc = new Scanner(System.in);
do {
System.out.print("Introduce dni: ");
dni = sc.nextInt();
} while (dni <= 0);
letra = calcularLetra();
}
//Método que devuelve un String de la forma 99999999-X
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(dni);
sb.append("-");
sb.append(letra);
return sb.toString();
}
}
Un
programa sencillo para probar esta clase puede ser este:
//Clase Principal
public class Main {
public static void main(String[] args) {
Nif nif1 = new Nif();
nif1.leer();
System.out.println(nif1);
Nif nif2 = new Nif(12345678);
System.out.println(nif2);
}
}
La ejecución
de este programa produce esta salida por pantalla:
Introduce dni: 22334455
22334455-Y
12345678-Z
Construye el pseudo-código, el diagrama de flujo y el programa en JAVA, tal que dado como datos las calificaciones de un número indeterminado de alumnos, se calcule el promedio de las calificaciones de la población femenina y el promedio de calificaciones de la población masculina. Para terminar el ciclo se debe introducir la calificación -1.
ResponderEliminarDatos: SEXO (‘1’ si es mujer y ‘2’ si es hombre)
Cal1, Cal2, . . ., -1
Donde: SEXO es una variable de tipo entero y Cali es una variable de tipo entero que representa el promedio del alumno i. me ayudan con este ejercicios