Controllo caratteri nomi/cognomi

This commit is contained in:
La Programmatrice Verde 2025-11-06 15:44:26 +01:00
parent 6d7155f529
commit 495f9f81c7
2 changed files with 37 additions and 9 deletions

View File

@ -17,8 +17,6 @@ import utility.GestisciStringhe;
*/
public class GestisciCodiceFiscale {
static final String[] CARATTERI_DA_RIMUOVERE = { " ", "'", "`" };
public static String CalcolaCodiceFiscale(String nome, String cognome, Date dataNascita, String luogo,
String sesso) {
return CalcolaPrimaTerna(cognome) + CalcolaSecondaTerna(nome) + CalcolaSettimoOttavo(dataNascita)
@ -28,7 +26,7 @@ public class GestisciCodiceFiscale {
static String CalcolaPrimaTerna(String cognome) {
String ritorno;
for (String carattere : CARATTERI_DA_RIMUOVERE) {
for (String carattere : MainComune.CARATTERI_DA_RIMUOVERE) {
cognome = GestisciStringhe.rimuoviCarattere(cognome, carattere);
}
@ -187,7 +185,7 @@ public class GestisciCodiceFiscale {
static String CalcolaSecondaTerna(String nome) {
String ritorno;
for (String carattere : CARATTERI_DA_RIMUOVERE) {
for (String carattere : MainComune.CARATTERI_DA_RIMUOVERE) {
nome = GestisciStringhe.rimuoviCarattere(nome, carattere);
}

View File

@ -19,6 +19,7 @@ public class MainComune {
static Scanner sc = new Scanner(System.in);
static final String PATTERN_DATA = "dd/MM/yyyy";
static final String[] sessiAmmessi = { "m", "f" };
static final String[] CARATTERI_DA_RIMUOVERE = { " ", "'", "`", "-" };
public static void main(String[] args) {
int scelta = -1;
@ -39,7 +40,8 @@ public class MainComune {
case 0:
break;
case 1:
System.out.println("Cittadino aggiunto con successo:\n" + aggiungiCittatino(cittadini).toString());
System.out.println(
"Cittadino aggiunto con successo:\n" + aggiungiCittatino(cittadini).toString());
pausa();
break;
case 2:
@ -71,11 +73,9 @@ public class MainComune {
String sesso;
Anagrafica ritorno;
System.out.print("Inserire il nome, compresi eventuali secondi nomi: ");
nome = sc.nextLine().trim();
nome = nomeCognome(true);
System.out.print("Inserire il cognome, compresi eventuali secondi cognomi: ");
cognome = sc.nextLine().trim();
cognome = nomeCognome(false);
dataNascita = dataNascita();
@ -88,6 +88,36 @@ public class MainComune {
return ritorno;
}
static String nomeCognome(boolean isNome) {
boolean error;
String ritorno;
do {
error = false;
System.out.print("Inserire il " + (isNome ? "" : "cog") + "nome, compresi eventuali secondi "
+ (isNome ? "" : "cog") + "nomi: ");
ritorno = sc.nextLine().trim();
for (int i = 0; i < ritorno.length() && !error; i++) {
error = !Character.isLetter(ritorno.charAt(i)) && !isCarattereDaRimuovere(ritorno.charAt(i));
}
if (error) {
System.out.println("Errore: sono ammesse solo lettere nel " + (isNome ? "" : "cog") + "nome.");
pausa();
}
} while (error);
return ritorno;
}
static boolean isCarattereDaRimuovere(char c) {
boolean exit = false;
for (int i = 0; i < CARATTERI_DA_RIMUOVERE.length && !exit; i++) {
exit = Character.toString(c).equals(CARATTERI_DA_RIMUOVERE[i]);
}
return exit;
}
static Date dataNascita() {
SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_DATA);
Date ritorno = null;