Visualizzazione dei risultati da 1 a 10 su 20

Discussione: aiuto problema java

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    49

    aiuto problema java

    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");
            }
    
    
        }
    
    
    } }
        
    }
    Ultima modifica di LeleFT; 21-10-2015 a 18:16 Motivo: Aggiunti i tag CODE

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.