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");
}
}
} }
}