Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package inputCodFisc;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class Main {
- public static void main(String[] args) {
- String nome,cognome,data,sesso,comune;
- BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
- //--------------------------------------INPUT NOME
- show("Nome: ");
- nome="";
- try {
- //leggo la riga
- String tempNome = in.readLine();
- //tolgo eventuali spazi
- String[] nomeParts=tempNome.split(" ");
- for(String x:nomeParts){
- nome+=x;
- }
- //tolgo eventuali accenti
- nome.toLowerCase();
- nome = nome.replaceAll("[à]","a");
- nome = nome.replaceAll("[èé]","e");
- nome = nome.replaceAll("[ì]","i");
- nome = nome.replaceAll("[ò]","o");
- nome = nome.replaceAll("[ù]","u");
- //controllo se il nome è composto solo da lettere
- for (char x : nome.toCharArray()) {
- if(!Character.isLetter(x)) {
- show(x+" non è una lettera valida");
- System.exit(1);
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- //--------------------------------------INPUT COGNOME
- show("Cognome: ");
- cognome="";
- try {
- //leggo la riga
- String tempCognome = in.readLine();
- //tolgo eventuali spazi
- String[] cognomeParts=tempCognome.split(" ");
- for(String x:cognomeParts){
- cognome+=x;
- }
- //tolgo eventuali accenti
- cognome.toLowerCase();
- cognome = cognome.replaceAll("[à]","a");
- cognome = cognome.replaceAll("[èé]","e");
- cognome = cognome.replaceAll("[ì]","i");
- cognome = cognome.replaceAll("[ò]","o");
- cognome = cognome.replaceAll("[ù]","u");
- //controllo se il cognome è composto solo da lettere
- for (char x : cognome.toCharArray()) {
- if(!Character.isLetter(x)) {
- show(x+" non è una lettera valida");
- System.exit(1);
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- //--------------------------------------INPUT DATA
- show("Data di nascita (gg/mm/aaaa): ");
- data="";
- try {
- //leggo la riga
- String tempData = in.readLine();
- //isolo i numeri
- String[] dataParts=tempData.split("/");
- //controllo che l'utente abbia inserito il formato che mi aspetto
- if (dataParts.length!=3){
- show(tempData+" non è una data");
- System.exit(1);
- }
- String g= dataParts[0];
- String m= dataParts[1];
- String a= dataParts[2];
- //valori di default nel caso l'utente tenti di inserire campi vuoti
- if (g.equals("")) g="1";
- if (m.equals("")) m="1";
- if (a.equals("")) a="1950";
- if(!isNumero(g)|| //se non è un numero (include il caso di numeri negativi, vedi funzione isNumero)
- new Integer(g)>31|| //se è maggiore di 31 (non esiste un mese del genere)
- new Integer(g)==0){ //se è uguale a zero
- show(g+" non è un numero di giorno valido");
- }
- if(!isNumero(m)||
- new Integer(m)>12||
- new Integer(m)==0){
- show(m+" non è un numero di mese valido");
- }
- if(!isNumero(a)||
- new Integer(a)<1900||
- new Integer(a)==0){
- show(a+" non è un numero di anno valido");
- }
- data=g+"/"+m+"/"+a;
- } catch (IOException e) {
- e.printStackTrace();
- }
- //--------------------------------------INPUT SESSO
- show("Sesso (m|f): ");
- sesso="";
- try {
- String tempSesso = in.readLine();
- switch (tempSesso){
- case "m":
- sesso="m";
- break;
- case "f":
- sesso="f";
- break;
- default:
- show(tempSesso+" non è un valore valido");
- System.exit(1);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- //--------------------------------------INPUT COMUNE
- //per limitare i casi di controllo errori costringo l'utente a scegliere tra le opzioni previste dal metodo generaCodiceFiscale
- show("Comune:");
- show("1:Roma");
- show("2:Rimini");
- show("3:Bologna");
- comune="";
- try {
- String tempComune = in.readLine();
- switch (tempComune){
- case "1":
- comune="roma";
- break;
- case "2":
- comune="rimini";
- break;
- case "3":
- comune="bologna";
- break;
- default:
- show(tempComune+" non è un valore valido");
- System.exit(1);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- show(CodiceFiscale.generaCodiceFiscale(new String[]{cognome,nome,data,sesso,comune}));
- }
- private static void show(String string) {
- System.out.println(string);
- }
- //true se le lettere della string sono tutti numeri (è quindi un numero valido)
- //false se almeno una lettera non è un numero (quindi anche se si tenta di inserire un numero negativo)
- private static boolean isNumero(String string)
- {
- for (char x : string.toCharArray())
- {
- if (!Character.isDigit(x)) return false;
- }
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement