2012-03-29 6 views
4

J'ai fait un système de facture de téléphone prend l'entrée du numéro de téléphone appelé, la date de l'appel et la durée de l'appel. il l'enregistre dans un fichier texte. ce que je n'ai pas pu faire est de rechercher le fichier texte pour le numéro de téléphone.Java rechercher un fichier texte

My coding

+0

et où est la question? –

+1

On dirait que vous pouvez lire dans le fichier. Ainsi faites cela, construisez une liste d'objets d'appel et peut-être les mettre dans une carte de phonenumber à la liste des appels. Puis recherchez/recherchez un numéro sur la carte. – Thomas

Répondre

4

juste faire la recherche linéaire (itérer sur votre liste de téléphone):

public static List<Phone> searchPhone(final String phoneNumber, final List<Phone> phoneList) { 
    List<Phone> matchedPhone = new ArrayList<Phone>(); 

    for(Phone phone: phoneList) { 
     if (phone.getphoneNumber().equals(phoneNumber)) { 
      matchedPhone.add(phone); 
     } 
    } 

    return matchedPhone; 
} 

aussi pour une meilleure lisibilité, ne faites pas votre paramètre de méthode en sortie. son pas une bonne pratique, vous devriez changer votre méthode de:

static void readList(List<Phone> phoneListIn) { 
} 

à:

static List<Phone> readList(final String fileName) { 
    } 

arguments de sortie devrait être évité autant que possible que vous pouvez

+0

pour (Phone Phone, phoneList); vient avec une erreur pour la ligne qui ';' attendu. Bien qu'il l'ait déjà. –

+0

désolé j'utilise une syntaxe différente pour la boucle foreach (c'est Qt sytanx), j'ai mis à jour la répondeur maintenant, vous pouvez utiliser boucle foreach ou boucle normale. pour (int i = 0; i

2

Effectuer Collections.sort(List list);

Ensuite, effectuer Collections.binarySearch(List list, Object key). Cela devrait permettre d'effectuer la recherche efficacement.

Questions connexes