2013-09-24 4 views
-3

J'essaye de faire un programme qui lit dans un fichier .txt externe et le manipule. Le fichier contient 5 groupes de données différents, 4 lignes chacun (2 int, 2 string). J'ai besoin de lire dans le fichier en utilisant la classe Scanner, Faire un objet pour contenir chaque groupe de données (écrire une classe qui stocke le groupe de données comme un seul objet (appelons-le ProgramData)). Ensuite, je dois créer un objet ProgamData et le mettre dans une ArrayList, et répéter pour chacun des 5 groupes.Vous manipulez un fichier texte en Java?

J'ai un fichier texte, et je l'ai lu avec le scanner (j'ai confirmé que je l'ai fait en imprimant sur la ligne de commande). Je suis complètement perdu à partir de là. Toute aide serait grandement appréciée.

pas comme ça va aider, mais voici mon code à ce jour:

import java.io.*; 
import java.util.ArrayList; 
import java.util.Scanner; 

public class Project1 
{ 
    public static void main (String[] args) throws IOException 
    { 

     File dataFile = new File("C:\\Users/data.txt"); 
     Scanner fileReader = new Scanner(dataFile); 

     int firstLine = fileReader.nextInt(); 
     int secondLine = fileReader.nextInt(); 
     String whiteSpace = fileReader.nextLine(); 
     String thirdLine = fileReader.nextLine(); 
     String fourthLine = fileReader.nextLine(); 

     ArrayList<String> newArray = new ArrayList<String>(); 

    } 


} 
+2

Vous devez définir une classe 'ProgramData' et en créer des instances pour chaque ensemble de données du fichier. Le 'ArrayList' devrait être' ArrayList '. Nous n'allons pas écrire le code pour vous, mais cela devrait vous orienter dans la bonne direction. –

+0

vous aurez besoin de tokenize votre chaîne (qui représente maintenant votre fichier texte). Tokenize basé sur quelque chose de prévisible, comme des virgules si c'est un CSV, des tabulations si c'est un fichier texte-tab-délimité, etc. Ou si tout est sur sa propre ligne, tokenize par de nouveaux caractères de ligne (\ r \ n sur windows, et \ n on * nix's) – SnakeDoc

+1

Donc, vous avez fait la partie facile ... Vous devez avoir une compréhension minimale du problème et demander de l'aide sur l'aide spécifique afin que nous puissions vous aider. – Grammin

Répondre

0

Assurez-vous que lorsque vous lisez le fichier d'entrée, utilisez la méthode hasNext() de la classe du scanner. Il détecte s'il y a toujours une ligne dans le fichier afin que vous n'atteignez pas la fin du fichier. Utilisez-le comme

// get file input 
// this will make sure there are still lines left within the 
// file and that you have not reached the end of the file 
while(fileReader.hasNext()) { 

    int firstLine = fileReader.nextInt(); 
    int secondLine = fileReader.nextInt(); 
    String whiteSpace = fileReader.nextLine(); 
    String thirdLine = fileReader.nextLine(); 
    String fourthLine = fileReader.nextLine(); 

} 

Vous devez effectuer les opérations ci-dessus pour effectuer les opérations que vous recherchez.

0

Voici les étapes que vous pouvez suivre:

  1. Créer une classe nommée comme ProgramData
  2. Faire un constructeur qui accepte vos données de groupe. -> What is constructor
  3. Maintenant, dans Project1 Class, lisez le fichier correctement. ->Scanner TutorialetReading a txt file using scanner java

  4. Une fois que vous obtenez toutes les premières données du groupe de fichiers passe à la classe ProgramData et créer par exemple quelque chose comme

    ProgramData pd1 = new ProgramData (/* list of parameter */) 
    
  5. Ajouter ce ProgramData instace à ArrayList comme ci-dessous

    // Define Arraylilst 
    ArrayList<ProgramData > list= new ArrayList<ProgramData >(); 
    
    // Do some operation like reading or collecting the data and creating object 
    // shown in step 4 
    
    list.add(pd1); // add new object of group to list. 
    

J'espère que cela aidera à y ou pour atteindre votre objectif. Si vous avez des questions, il suffit de demander. Bonne chance