Mi è stata assegnato questo compito: Dato un' array di record aventi i seguenti campi(cognome,nome,classe,residenza,data di nascita,indirizzo,telefono,codice fiscale).Ordinare l'array codice fiscale e una volta ordinato e dato in input.Bisogna effettuare la ricerca binaria e comunicare se è presente o meno.Io ho realizzato questo codice ma non capisco perchè non funziona se inserisco piu' codici fiscali,ma funziona solo con 1.Vi prego aiutatemi non so come fare.
codice:/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package anagrafe; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Scanner; /** * * @author user */ public class Anagrafe { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here /** * * @author user */ class Persona { String Codicefiscale; String Cognome; String Nome; int Classe; String Datadinascita; String Indirizzo; String Residenza; String Telefono; } /** * @param args the command line arguments */ Scanner leggi = new Scanner(System.in); int n = 0; String Codicefiscale; String Cognome; String Nome; int Classe; String Datadinascita; String Indirizzo; String Residenza; String Telefono; int i; boolean x = false; do { System.out.println("Inserisci il numero di elementi dell'array"); n = leggi.nextInt(); } while (n <= 0); leggi.nextLine(); Persona Arranag[] = new Persona[n]; for (i = 0; i < n; i++) { Arranag[i] = new Persona(); } i=0; while (i < n) { do { System.out.println("Inserisci il codice fiscale"); Codicefiscale = leggi.nextLine(); } while (Codicefiscale.compareTo("") == 0); do { System.out.println("Inserisci il cognome"); Cognome = leggi.nextLine(); } while (Cognome.compareTo("") == 0); do { System.out.println("Inserisci il nome"); Nome = leggi.nextLine(); } while (Nome.compareTo("") == 0); do { System.out.println("Inserisci la classe"); Classe = leggi.nextInt(); } while (Classe <= 0); leggi.nextLine(); do { x = false; System.out.println("Inserisci la data di nascita"); Datadinascita = leggi.nextLine(); SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy"); try { dateFormat.parse(Datadinascita); } catch (ParseException e) { x = true; } } while (x == true); do { System.out.println("Inserisci l'indirizzo"); Indirizzo = leggi.nextLine(); } while (Indirizzo.compareTo("") == 0); do { System.out.println("Inserisci la residenza"); Residenza = leggi.nextLine(); } while (Residenza.compareTo("") == 0); do { System.out.println("Inserisci il numero di telfono"); Telefono = leggi.nextLine(); } while (Telefono.compareTo("") == 0); Persona temp = new Persona(); temp.Classe = Classe; temp.Codicefiscale = Codicefiscale; temp.Cognome = Cognome; temp.Telefono = Telefono; temp.Datadinascita = Datadinascita; temp.Nome = Nome; temp.Residenza = Residenza; temp.Indirizzo = Indirizzo; boolean stop = false; for (int j = 0; j < i && stop == false; j++) { System.out.println(Arranag[j].Codicefiscale+" "+j); if (temp.Codicefiscale.compareTo(Arranag[j].Codicefiscale) == 0) { stop = true; } else { if (temp.Codicefiscale.compareTo(Arranag[j].Codicefiscale) < 0) { Persona scambio = temp; temp = Arranag[j]; Arranag[j] = scambio; } } } if (stop == false) { Arranag[i] = temp; i++; //incremento solo se i codice fiscale inserito non era già presente } else { System.out.println("Codice fisclae già inserito, usare un altro codice."); stop = true; } } do { System.out.println("Inserisci il codice fiscale da ricercare"); Codicefiscale = leggi.nextLine(); } while (Codicefiscale.compareTo("") == 0); boolean trovato = false; int media = 0; int inf = 0; int sup = n - 1; while (inf <= sup && trovato == false) { media = (inf + sup) / 2; if (Arranag[media].Codicefiscale.compareTo(Codicefiscale) == 0) { trovato = true; } else { if (Arranag[media].Codicefiscale.compareTo(Codicefiscale) < 0) { sup = media - 1; } else { inf = media + 1; } } } if (trovato == true) { int j; System.out.println("codice fiscale trovato"+Arranag[j].Codicefiscale); } else { System.out.println("codice fiscale non trovato"); } } } } }