CE L'HO FATTA !!! Finalmente mi sembra funzioni a dovere!! Ci ho sbattuto un po' la testa ma è stato meglio così!
Ora mi dareste un giudizio sul codice (la traccia da svolgere è all'inizio di questo topic)? Si poteva fare meglio? E come? Grazie!

codice:
import java.io.*;
import java.util.*;
class GestVoli {
	// definisco un arraylist di tipo definito dalla classe Voli
	private static ArrayList<Voli> listVoli= new ArrayList<Voli>();
	private static boolean caricaVoli(String nomeFile) {
		try {
			//costruisco l'oggetto scanner in cui confluiranno i dati del file
			Scanner scanFile=new Scanner(new File(nomeFile));
			int i=1;
			while (scanFile.hasNext()) {
				try {
					String idVolo=scanFile.next();
					String cittPart=scanFile.next();
					String aPart=scanFile.next();
					String cittDest=scanFile.next();
					String aDest=scanFile.next();
					String compagnia=scanFile.next();
					String orPart=scanFile.next();
					String orArr=scanFile.next();
					listVoli.add(new Voli(idVolo, cittPart, aPart, cittDest, aDest, compagnia, orPart, orArr));
					i++;
				}
				catch (IllegalArgumentException e) {
					System.out.println("La riga n. " + i + " non ha i parametri giusti");
				}
			}
		}
		catch (FileNotFoundException e) {
			System.out.println("Il file " + nomeFile + " non esiste o non e' nel percorso giusto!");
		}
		if (listVoli.size()>0)
			return true;
		else
			return false;
	}
	// inizio metodo che interagisce con l'utente
	private static void startInterfaccia() {
		// stabilisco una variabile di controllo per verificare se l'utente ha annullato l'operazione
		boolean utenteAnnulla=false;
		do {
			Scanner utenteInput=new Scanner(System.in);
			System.out.println("Quale volo vuoi cercare? (premi q per terminare)");
			String cittaCercata=utenteInput.nextLine();
			boolean trovato=false;
			if (!cittaCercata.equals("q")) {
				for (int i=0; i<listVoli.size(); i++) {
					Voli thisVolo=listVoli.get(i);
					if (cittaCercata != null && thisVolo.getCittPart().equals(cittaCercata)) {
						System.out.println(listVoli.get(i));
						trovato=true;
					}
					if (cittaCercata != null && thisVolo.getCittDest().equals(cittaCercata)) {
						System.out.println(listVoli.get(i));
						trovato=true;
					}
				}
				if (trovato=false)
					System.out.println("Non ci sono voli per quella citta'!");
			}
			else
				utenteAnnulla=true;
		}
		while (!utenteAnnulla);
	}
	public static void main (String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.println("Inserisci il nome del file in cui cercare: ");
		String nomeFile=scan.nextLine();
		boolean fileCaricato=GestVoli.caricaVoli(nomeFile);
		if (fileCaricato==true)
			GestVoli.startInterfaccia();
		else
			System.out.println("Non sono stati aggiunti i dati nel file!");
	}
}