eso93 ha scritto:
Dato un file contenente un elenco di città con relativi numero abitanti
(Es. Milano 1.000.000)
1.Trovare la città con il numero maggiore di Abitanti e stamparla
2. Trovare la città con il nome più lungo e stamparla
Allora:
1) Innanzitutto definisci una classe che contiene le informazioni di: nome citta
e numero abitanti.
Nella classe le solite cose: campi
private, metodi "accessori" getter/setter
public, un costruttore che riceve nome/numero (se necessario). Altro eventuale es. toString, ecc... Attenzione: nient'altro, niente I/O da file o dall'utente.
2) In una classe specifica dell'esercizio (non è quella detta al punto 1 !) fai un metodo che dato un nome di file, esegue la lettura e poi restituisce un List<XYZ> (XYZ il nome che scegli per la classe al punto 1). Chiaramente dovrai istanziare un es. ArrayList<XYZ>, leggere il file riga per riga, estrarre e separare le informazioni, creare gli oggetti XYZ e popolare la lista.
3) Nel main della classe dell'esercizio userai quel metodo di lettura ed otterrai una lista degli oggetti ciascuno con nome città/numero abitanti. Per trovare le informazioni richieste ci sono diverse strade:
a) Fai tu una ricerca lineare e man mano ti tieni l'oggetto che soddisfa meglio il criterio richiesto. Es. per il numero maggiore di abitanti tieni in una variabile il riferimento all'oggetto che man mano supera il numero che avevi nell'oggetto in precedenza.
b) Ordini la lista usando una apposita implementazione di Comparator e poi prendi il primo (o ultimo a seconda del senso) elemento. Tra l'altro, in alternativa, la classe java.util.Collections ha i comodi metodi max/min che si basano su Comparable o Comparator. Ma bisogna vedere se
puoi usarli.
Se usare a) o b) dipende dalle richieste e dalle tue conoscenze.
Domanda: cosa deve succedere se più città dovessero avere lo stesso numero di abitanti o nome con la stessa lunghezza?
P.S. ti ho dato indicazioni abbastanza precise. Prova a ragionarci e quindi a scrivere TU il codice. Per dubbi specifici, chiedi.