Boa tarde. Sou novo em Java e gostaria que me ajudassem.
Estou com esse exercício e não consegui faze-lo:
Você deve desenvolver um programa que calcule o dígito verificador para uma série de matrículas da empresa SEUTIME.
Dada uma matrícula de 0000 a 9999 o cálculo do dígito verificador deverá ser feito multiplicando o primeiro número a esquerda por 5, o segundo por 4, o terceiro por 3 e o quarto por 2. O resultado parcial de cada posição deve ser somado e o resultado final da soma deverá ser dividido por 16. O resto desta divisão deverá ser convertido para hexadecimal, sendo este então o dígito verificador.
Exemplo: matrícula = 9876
Cálculo: 9 * 5 = 45 / 8 * 4 = 32 / 7 * 3 = 21 / 6 * 2 = 12 / Total = 45 + 32 + 21 + 12 = 110
Resto da divisão de 110 por 16 é igual a 14.
O número 14 em base 16 é “E”. Este é o dígito verificador da matrícula.
Matrícula completa = 9876-E
Pede-se:
1- Ler as matrículas que estão no arquivo matriculasSemDV.txt e gerar um arquivo de saída matriculasComDV.txt com as matrículas completas, conforme regra de formação descrita acima.
Exemplo:
matriculasSemDV.txt
9876
9992
matriculasComDV.txt
9876-E
9992-0
2- Ler as matrículas que estão no arquivo matriculasParaVerificar.txt e gerar um arquivo matriculasVerificadas.txt com as matrículas e um indicador de “verdadeiro” ou “falso” ao lado de cada matrícula, separado por espaço.
Exemplo:
matriculasParaVerificar.txt
9876-E
9992-2
matriculasVerificadas.txt
9876-E verdadeiro
9992-2 falso
já fiz isso :
//ler o arquivo
try(Scanner scanner = new Scanner (new FileInputStream (“C:\Users\Leonardo\Desktop\SoftblueJAVA\matriculasSemDV.txt”))){
while (scanner.hasNext()) {
String s = scanner.nextLine();
//s += line + "\n";
System.out.println(s);
//conta sem ler do arquivo
float[] array = new float[7];
//digita 4 numeros para fazer a conta.
try (Scanner entrada = new Scanner(System.in)) {
System.out.println("Valores: ");
array[0] = entrada.nextFloat();
array[1] = entrada.nextFloat();
array[2] = entrada.nextFloat();
array[3] = entrada.nextFloat();
//conta [0] * 5 = 45 / [1] * 4 = 32 / [2] * 3 = 21 / [3] * 2 = 12 / Total = 45 + 32 + 21 + 12 = 110
float conta1 = (array[0] * 5) + (array[1] * 4) + (array[2] * 3) + (array[3] * 2);
System.out.println(conta1);
// divisão por 16
float conta2 = conta1 % 16;
System.out.println(conta2);
//convertento para hexadecimal
String total = Integer.toHexString((int) conta2);
System.out.println(total);