From 20997136dc2dfca739d9fa48a9bf3b1abfaa86c2 Mon Sep 17 00:00:00 2001 From: La Programmatrice Verde Date: Tue, 4 Nov 2025 21:50:31 +0100 Subject: [PATCH] Secondo caso nome --- src/appComune/GestisciCodiceFiscale.java | 29 ++++++++++++++++-------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/appComune/GestisciCodiceFiscale.java b/src/appComune/GestisciCodiceFiscale.java index 2da0a33..bd5517d 100644 --- a/src/appComune/GestisciCodiceFiscale.java +++ b/src/appComune/GestisciCodiceFiscale.java @@ -37,14 +37,14 @@ public class GestisciCodiceFiscale { ritorno = quintoCasoCognome(caratteriCognome); } else { if (posizioniConsonanti[2] == -1) { // non è stata trovata la terza consonante, AKA l'array nell'ultima - // posizione - // ha valore di default + // posizione + // ha valore di default char primaVocale = trovaPrimaVocale(caratteriCognome)[0]; int posizionePrimaVocale = trovaPrimaVocale(caratteriCognome)[1]; if (posizioniConsonanti[1] == -1) { // non è stata trovata la seconda consonante, AKA l'array nella - // penultima - // posizione - // ha valore di default + // penultima + // posizione + // ha valore di default int secondaVocale = trovaSecondaVocale(caratteriCognome, posizionePrimaVocale); @@ -97,7 +97,7 @@ public class GestisciCodiceFiscale { return ritorno; } - static int[] trovaConsonanti(String cognome) { //trova le prime 4 consonanti + static int[] trovaConsonanti(String cognome) { // trova le prime 4 consonanti boolean exit = false; char[] caratteriCognome = cognome.toCharArray(); int[] posizioniConsonanti = new int[5]; @@ -105,7 +105,8 @@ public class GestisciCodiceFiscale { Arrays.fill(posizioniConsonanti, -1); for (int j = 0; j < posizioniConsonanti.length; j++) { - for (int i = (posizioniConsonanti[j] == -1 ? 0 : posizioniConsonanti[j]); i < caratteriCognome.length && !exit; i++) { + for (int i = (posizioniConsonanti[j] == -1 ? 0 : posizioniConsonanti[j]); i < caratteriCognome.length + && !exit; i++) { if (GestisciStringhe.isConsonante(caratteriCognome[i])) { exit = true; posizioniConsonanti[j + 1] = i; @@ -175,14 +176,24 @@ public class GestisciCodiceFiscale { int[] posizioniConsonanti = trovaConsonanti(nome); if (posizioniConsonanti[3] == -1) { - ritorno = Character.toString(caratteriNome[posizioniConsonanti[0]]) + if (posizioniConsonanti[2] == -1) { + /* + * O grandi divinità del codice, fate in modo che ogni nome abbia almeno una vocale + */ + char primaVocale = trovaPrimaVocale(caratteriNome)[0]; + ritorno = Character.toString(caratteriNome[posizioniConsonanti[0]]) + + Character.toString(caratteriNome[posizioniConsonanti[1]]) + + Character.toString(primaVocale); + } else { + ritorno = Character.toString(caratteriNome[posizioniConsonanti[0]]) + Character.toString(caratteriNome[posizioniConsonanti[1]]) + Character.toString(caratteriNome[posizioniConsonanti[2]]); + } } return ritorno; } - + static String CalcolaSettimoOttavo(Date dataNascita) { }