Secondo caso nome

This commit is contained in:
La Programmatrice Verde 2025-11-04 21:50:31 +01:00
parent b406b8ff75
commit 20997136dc

View File

@ -37,14 +37,14 @@ public class GestisciCodiceFiscale {
ritorno = quintoCasoCognome(caratteriCognome); ritorno = quintoCasoCognome(caratteriCognome);
} else { } else {
if (posizioniConsonanti[2] == -1) { // 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] == -1) { // 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
int secondaVocale = trovaSecondaVocale(caratteriCognome, posizionePrimaVocale); int secondaVocale = trovaSecondaVocale(caratteriCognome, posizionePrimaVocale);
@ -97,7 +97,7 @@ public class GestisciCodiceFiscale {
return ritorno; 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; boolean exit = false;
char[] caratteriCognome = cognome.toCharArray(); char[] caratteriCognome = cognome.toCharArray();
int[] posizioniConsonanti = new int[5]; int[] posizioniConsonanti = new int[5];
@ -105,7 +105,8 @@ public class GestisciCodiceFiscale {
Arrays.fill(posizioniConsonanti, -1); 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] == -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])) { if (GestisciStringhe.isConsonante(caratteriCognome[i])) {
exit = true; exit = true;
posizioniConsonanti[j + 1] = i; posizioniConsonanti[j + 1] = i;
@ -175,9 +176,19 @@ public class GestisciCodiceFiscale {
int[] posizioniConsonanti = trovaConsonanti(nome); int[] posizioniConsonanti = trovaConsonanti(nome);
if (posizioniConsonanti[3] == -1) { 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[1]])
+ Character.toString(caratteriNome[posizioniConsonanti[2]]); + Character.toString(caratteriNome[posizioniConsonanti[2]]);
}
} }
return ritorno; return ritorno;