Primo caso nome

This commit is contained in:
La Programmatrice Verde 2025-11-04 21:38:53 +01:00
parent e5069081a0
commit b406b8ff75

View File

@ -4,6 +4,7 @@
*/ */
package appComune; package appComune;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import utility.GestisciStringhe; import utility.GestisciStringhe;
@ -32,15 +33,15 @@ public class GestisciCodiceFiscale {
char[] caratteriCognome = cognome.toCharArray(); char[] caratteriCognome = cognome.toCharArray();
int[] posizioniConsonanti = trovaConsonanti(cognome); int[] posizioniConsonanti = trovaConsonanti(cognome);
if (posizioniConsonanti[0] == 0) { // non è stata trovata la prima consonante, ovvero non ce ne sono if (posizioniConsonanti[0] == -1) { // non è stata trovata la prima consonante, ovvero non ce ne sono
ritorno = quintoCasoCognome(caratteriCognome); ritorno = quintoCasoCognome(caratteriCognome);
} else { } else {
if (posizioniConsonanti[2] == 0) { // non è stata trovata la terza consonante, AKA l'array nell'ultima if (posizioniConsonanti[2] == -1) { // non è stata trovata la terza consonante, AKA l'array nell'ultima
// posizione // posizione
// ha valore di default // ha valore di default
char primaVocale = trovaPrimaVocale(caratteriCognome)[0]; char primaVocale = trovaPrimaVocale(caratteriCognome)[0];
int posizionePrimaVocale = trovaPrimaVocale(caratteriCognome)[1]; int posizionePrimaVocale = trovaPrimaVocale(caratteriCognome)[1];
if (posizioniConsonanti[1] == 0) { // non è stata trovata la seconda consonante, AKA l'array nella if (posizioniConsonanti[1] == -1) { // non è stata trovata la seconda consonante, AKA l'array nella
// penultima // penultima
// posizione // posizione
// ha valore di default // ha valore di default
@ -48,23 +49,23 @@ public class GestisciCodiceFiscale {
int secondaVocale = trovaSecondaVocale(caratteriCognome, posizionePrimaVocale); int secondaVocale = trovaSecondaVocale(caratteriCognome, posizionePrimaVocale);
if (secondaVocale == -1) { if (secondaVocale == -1) {
ritorno = Character.toString(caratteriCognome[posizioniConsonanti[1]]) ritorno = Character.toString(caratteriCognome[posizioniConsonanti[0]])
+ Character.toString(primaVocale) + Character.toString(primaVocale)
+ Character.toString('x'); + Character.toString('x');
} else { } else {
ritorno = Character.toString(caratteriCognome[posizioniConsonanti[1]]) ritorno = Character.toString(caratteriCognome[posizioniConsonanti[0]])
+ Character.toString(primaVocale) + Character.toString(primaVocale)
+ Character.toString(secondaVocale); + Character.toString(secondaVocale);
} }
} else { } else {
ritorno = Character.toString(caratteriCognome[posizioniConsonanti[1]]) ritorno = Character.toString(caratteriCognome[posizioniConsonanti[0]])
+ Character.toString(caratteriCognome[posizioniConsonanti[2]]) + Character.toString(caratteriCognome[posizioniConsonanti[1]])
+ Character.toString(primaVocale); + Character.toString(primaVocale);
} }
} else { } else {
ritorno = Character.toString(caratteriCognome[posizioniConsonanti[1]]) ritorno = Character.toString(caratteriCognome[posizioniConsonanti[0]])
+ Character.toString(caratteriCognome[posizioniConsonanti[2]]) + Character.toString(caratteriCognome[posizioniConsonanti[1]])
+ Character.toString(caratteriCognome[posizioniConsonanti[3]]); + Character.toString(caratteriCognome[posizioniConsonanti[2]]);
} }
} }
@ -96,14 +97,15 @@ public class GestisciCodiceFiscale {
return ritorno; return ritorno;
} }
static int[] trovaConsonanti(String cognome) { static int[] trovaConsonanti(String cognome) { //trova le prime 4 consonanti
boolean exit = false; boolean exit = false;
char[] caratteriCognome = cognome.toCharArray(); char[] caratteriCognome = cognome.toCharArray();
int[] posizioniConsonanti = new int[4]; int[] posizioniConsonanti = new int[5];
int[] ritorno = new int[3]; int[] ritorno = new int[4];
Arrays.fill(posizioniConsonanti, -1);
for (int j = 0; j < posizioniConsonanti.length; j++) { for (int j = 0; j < posizioniConsonanti.length; j++) {
for (int i = 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])) { if (GestisciStringhe.isConsonante(caratteriCognome[i])) {
exit = true; exit = true;
posizioniConsonanti[j + 1] = i; posizioniConsonanti[j + 1] = i;
@ -114,18 +116,19 @@ public class GestisciCodiceFiscale {
ritorno[0] = posizioniConsonanti[1]; ritorno[0] = posizioniConsonanti[1];
ritorno[1] = posizioniConsonanti[2]; ritorno[1] = posizioniConsonanti[2];
ritorno[2] = posizioniConsonanti[3]; ritorno[2] = posizioniConsonanti[3];
ritorno[3] = posizioniConsonanti[4];
return ritorno; return ritorno;
} }
static char[] trovaPrimaVocale(char[] caratteriCognome) { static char[] trovaPrimaVocale(char[] caratteri) {
boolean exit = false; boolean exit = false;
char[] ritorno = new char[2]; char[] ritorno = new char[2];
for (int i = 0; i < caratteriCognome.length && !exit; i++) { for (int i = 0; i < caratteri.length && !exit; i++) {
if (GestisciStringhe.isVocale(caratteriCognome[i])) { if (GestisciStringhe.isVocale(caratteri[i])) {
exit = true; exit = true;
ritorno[0] = caratteriCognome[i]; ritorno[0] = caratteri[i];
ritorno[1] = (char) i; ritorno[1] = (char) i;
} }
} }
@ -161,14 +164,25 @@ public class GestisciCodiceFiscale {
} }
static String CalcolaSecondaTerna(String nome) { static String CalcolaSecondaTerna(String nome) {
String ritorno;
for (String carattere : CARATTERI_DA_RIMUOVERE) { for (String carattere : CARATTERI_DA_RIMUOVERE) {
nome = GestisciStringhe.rimuoviCarattere(nome, carattere); nome = GestisciStringhe.rimuoviCarattere(nome, carattere);
} }
nome = nome.toLowerCase(); nome = nome.toLowerCase();
} char[] caratteriNome = nome.toCharArray();
int[] posizioniConsonanti = trovaConsonanti(nome);
if (posizioniConsonanti[3] == -1) {
ritorno = Character.toString(caratteriNome[posizioniConsonanti[0]])
+ Character.toString(caratteriNome[posizioniConsonanti[1]])
+ Character.toString(caratteriNome[posizioniConsonanti[2]]);
}
return ritorno;
}
static String CalcolaSettimoOttavo(Date dataNascita) { static String CalcolaSettimoOttavo(Date dataNascita) {
} }