2013-05-30 3 views
-1

J'ai une question sur la lecture et l'écriture de fichiers depuis que j'ai appris à leur sujet récemment.Un guide pour lire dans un fichier

Si je le fichier contient un ensemble de données comme:

1 apartment 600000 2 house 500000 3 house 1000 4 something 5456564 

(prix nom id/string int Double)

C'est tout en 1 ligne,

Puis-je faire quelque chose comme instanceof si que je peux calculer les prix de 1 type comme tous les prix des maisons?

+1

Est-ce Java? (basé sur 'instanceof'). C'est plutôt difficile de comprendre la question. Cela peut répondre à votre question - 'instanceof' est pour vérifier si un objet est d'un certain type, vous ne pouvez pas l'utiliser pour comparer des chaînes les unes avec les autres (toutes les chaînes ont le même type -' String' (en Java)). Mais vous pouvez utiliser 'yourString.equals (" house ")'. – Dukeling

+0

Oh désolé d'oublier d'énoncer la langue, oui c'est Java. et je suis familier avec FileReader, BufferedReader et en utilisant Scanner pour lire les fichiers le long de while-loop pour lire les lignes. ne sais pas à propos de yourString.equals ("house") – Abdelrahman

+0

Il existe de nombreux guides, à la fois sur la lecture de fichiers et instanceof. Il n'y a pas besoin de poser cette question. Ça ne va pas aider tout le monde. – Val

Répondre

2

On ne sait pas à moi comment vous stockez actuellement les données que vous lisez, mais ce que vous devez faire est de lire les données dans une liste d'un objet de données:

public class Dwelling 
{ 
    int Id; 
    String name; 
    int price; 
} 

stocker ensuite ces derniers dans certaines données structure. Je pense qu'une HashMap de ArrayLists peut être pratique pour vos besoins:

HashMap<String, ArrayList<Dwelling>> types = new HashMap<String, ArrayList<Dwelling>>(); 

// Loop through records in file 
while(moreRecords) 
{ 
    // Read the next record into a data object 
    DwellingType d = getNextDwelling(); 

    // Store the record in the data structure 
    ArrayList<Dwelling> list = types.get(d.getName()); 
    if (list == null) 
    { 
     list = new ArrayList<Dwelling>(); 
     types.put(d.getName(), list); 
    } 
    list.add(d); 
} 

Pour accéder à la liste des enregistrements d'un type particulier, vous souhaitez simplement appeler HashMap.get():

ArrayList<Dwelling> list = types.get("Apartment"); 

alors vous pouvez boucle à travers les enregistrements pour faire ce que vous devez faire:

int totalPrice = 0; 
for (Dwelling d : list) 
{ 
    totalPrice += d.price; 
} 
+0

merci pour les modifications, Duke! –