From f2ffafa096faa28d24a6e3ff94ee8b85400a2a18 Mon Sep 17 00:00:00 2001 From: 250413 <250413@192.168.149.226> Date: Fri, 8 May 2026 13:56:22 +0100 Subject: [PATCH] =?UTF-8?q?finaliza=C3=A7=C3=A3o=20do=20sistema=20de=20ver?= =?UTF-8?q?ificac=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mavenproject25/Mavenproject25.java | 107 ++++++++++-------- 1 file changed, 57 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/mycompany/mavenproject25/Mavenproject25.java b/src/main/java/com/mycompany/mavenproject25/Mavenproject25.java index d38c0a0..90477de 100644 --- a/src/main/java/com/mycompany/mavenproject25/Mavenproject25.java +++ b/src/main/java/com/mycompany/mavenproject25/Mavenproject25.java @@ -246,45 +246,43 @@ public class Mavenproject25 { } } - public static void verificarNIF(String NIF) { - Scanner scanner = new Scanner(System.in); - - while (!NIF.matches("\\d{9}")) { - String NIFValido = ""; - System.out.println("NIF inválido (tem de ter 9 dígitos)\n" - + "Introduza o NIF novamente:"); - } - // Separar os dígitos - - int d1 = Character.getNumericValue(NIF.charAt(0)); - int d2 = Character.getNumericValue(NIF.charAt(1)); - int d3 = Character.getNumericValue(NIF.charAt(2)); - int d4 = Character.getNumericValue(NIF.charAt(3)); - int d5 = Character.getNumericValue(NIF.charAt(4)); - int d6 = Character.getNumericValue(NIF.charAt(5)); - int d7 = Character.getNumericValue(NIF.charAt(6)); - int d8 = Character.getNumericValue(NIF.charAt(7)); - int d9 = Character.getNumericValue(NIF.charAt(8)); - int produto = (d8 * 2) + (d7 * 3) + (d6 * 4) + (d5 * 5) + - (d4 * 6) + (d3 * 7) + (d2 * 8) + (d1 * 9); - int resto = produto % 11; - int digitoControlo; - if (resto == 0 || resto == 1){ - digitoControlo = 0; - } else { - digitoControlo = 11 - resto; - } - if(digitoControlo == d9){ - System.out.println("O NIF é válido"); - - } else { - System.out.println("O NIF é inválido\n" - + "Introduza um válido:"); - NIF = scanner.nextLine(); - System.out.println("O NIF é válido"); - } - - } + public static boolean verificarNIF(String nif) { + // Verificar se tem 9 dígitos + if (!nif.matches("\\d{9}")) { + System.out.println("NIF inválido (tem de ter 9 dígitos)"); + return false; + } + + // Separar os dígitos + int d1 = Character.getNumericValue(nif.charAt(0)); + int d2 = Character.getNumericValue(nif.charAt(1)); + int d3 = Character.getNumericValue(nif.charAt(2)); + int d4 = Character.getNumericValue(nif.charAt(3)); + int d5 = Character.getNumericValue(nif.charAt(4)); + int d6 = Character.getNumericValue(nif.charAt(5)); + int d7 = Character.getNumericValue(nif.charAt(6)); + int d8 = Character.getNumericValue(nif.charAt(7)); + int d9 = Character.getNumericValue(nif.charAt(8)); + + // Cálculo do dígito de controlo + int produto = (d8 * 2) + (d7 * 3) + (d6 * 4) + (d5 * 5) + + (d4 * 6) + (d3 * 7) + (d2 * 8) + (d1 * 9); + int resto = produto % 11; + int digitoControlo; + + if (resto == 0 || resto == 1) { + digitoControlo = 0; + } else { + digitoControlo = 11 - resto; + } + + // Verificar se o dígito de controlo está correto + if (digitoControlo == d9) { + return true; + } else { + return false; + } +} public static void procurarCliente() { @@ -303,10 +301,10 @@ public static void procurarCliente() { String idTitular[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)]; String numeroTel[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)]; String email[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)]; - String NIF[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)]; + String nif[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)]; String saldoTxt[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)]; - leExtraiCsvFicheiro(nomeFicheiro, nome, idTitular, numeroTel, email, NIF, saldoTxt); + leExtraiCsvFicheiro(nomeFicheiro, nome, idTitular, numeroTel, email, nif, saldoTxt); boolean encontrado = false; @@ -317,7 +315,7 @@ public static void procurarCliente() { System.out.println("ID: " + idTitular[i]); System.out.println("Telefone: " + numeroTel[i]); System.out.println("Email: " + email[i]); - System.out.println("NIF: " + NIF[i] + "\n"); + System.out.println("NIF: " + nif[i] + "\n"); System.out.println("Saldo: " + saldoTxt[i] + "\n"); encontrado = true; } @@ -344,10 +342,10 @@ public static void editarDinheiroCliente() { String idTitular[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)]; String numeroTel[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)]; String email[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)]; - String NIF[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)]; + String nif[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)]; String saldo[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)]; - leExtraiCsvFicheiro(nomeFicheiro, nome, idTitular, numeroTel, email, NIF, saldo); + leExtraiCsvFicheiro(nomeFicheiro, nome, idTitular, numeroTel, email, nif, saldo); int indiceEditar = -1; @@ -381,9 +379,9 @@ public static void editarDinheiroCliente() { String novoEmail = scanner.nextLine(); if (!novoEmail.isEmpty()) email[indiceEditar] = novoEmail; - System.out.print("Novo NIF (atual: " + NIF[indiceEditar] + "): "); + System.out.print("Novo NIF (atual: " + nif[indiceEditar] + "): "); String novoNIF = scanner.nextLine(); - if (!novoNIF.isEmpty()) NIF[indiceEditar] = novoNIF; + if (!novoNIF.isEmpty()) nif[indiceEditar] = novoNIF; // Reescrever o ficheiro com os dados atualizados StringBuilder conteudoAtualizado = new StringBuilder(); @@ -392,7 +390,7 @@ public static void editarDinheiroCliente() { .append(idTitular[i]).append(",") .append(numeroTel[i]).append(",") .append(email[i]).append(",") - .append(NIF[i]).append("\n") + .append(nif[i]).append("\n") .append(saldo[i]).append("\n"); } @@ -427,8 +425,17 @@ public static void editarDinheiroCliente() { System.out.print("║Introduza o ID: "); String idTitular = scanner.next(); System.out.print("╠════════════════════════════════════════\n"); + + String nif; System.out.print("║Introduza NIF: "); - String nif = scanner.next(); + nif = scanner.next(); + + while(!verificarNIF(nif)) { + System.out.println("║NIF inválido!\n" + + "║Introduza NIF novamente:"); + nif = scanner.next(); + System.out.print("╠════════════════════════════════════════\n"); + } System.out.print("╠════════════════════════════════════════\n"); System.out.print("║Introduza número: "); String NumeroTel = scanner.next(); @@ -445,7 +452,7 @@ public static void editarDinheiroCliente() { System.out.print("╠════════════════════════════════════════\n"); } - + System.out.print("╠════════════════════════════════════════\n"); double saldo; System.out.print("║Introduza saldo(Min: 60€): "); saldo = scanner.nextDouble(); @@ -472,4 +479,4 @@ public static void editarDinheiroCliente() { // procurarCliente(); // // } -} \ No newline at end of file + }