2015-04-17 1 views
0

J'ai une affectation qui me demande de lire dans un fichier, nous un ArrayList pour organiser et déclarer les nombres, puis calculer la moyenne de ces nombres et les imprimer dans un nouveau fichier. Je sais que j'ai besoin de 3 parties pour ce qui serait le Reader, Writer et la liste des tableaux, mais je reçois une erreur lors de la compilation lorsque j'essaie de lire à partir du scanner. Quelqu'un peut-il aider à lire le fichier avec ArrayList et comment écrire dans un nouveau fichier.Lecture à partir d'un fichier utilisant ArrayList en Java

import java.util.ArrayList; 
import java.util.Collections; 
import java.io.*; //Replaces the scanner 
import java.io.BufferedReader; 
import java.util.Scanner; 
import java.io.FileReader; // Used by the BufferedReader import java.util.Scanner; 
import java.io.FileNotFoundException; // 
import java.io.IOException; // 

    class SD9 { 
     public static void main(String[] args) { 
      try{ 
      FileReader Fr = new FileReader("Patriots.txt"); 
       // the file reader bridges the program and the .txt file together. 
       BufferedReader Br = new BufferedReader(Fr); 
       String line = Br.readLine(); 
       // BufferredReaders can only read one line at a time. 
       FileWriter fw = new FileWriter("PatriotsStat.txt"); 
       BufferedWriter bw = new BufferedWriter(fw); 
       while(line != null) { 
       //BufferredReaders return null once they've reached  the end of the file. 
       ArrayList<Double> Patriots = new ArrayList<Double>(); 
      for(int i = 0; i < 23; ++i) { 
        Patriots.add(scan.nextDouble()); 
         }  

       /* String Line1 = "2014 PreSeason:"; 
       bw.write( " " ); 
       bw.newLine(); 
        /*String Line3 = " FinalAvg: " + finalAvg; 
        bw.write(Line3); 
        bw.newLine();*/ 

       } 
           bw.close(); 
        }catch(FileNotFoundException F) { 
       //..... 
       } catch(IOException I) { 
      } 

     } 
     } 
+1

Déclarez votre ArrayList en dehors de la boucle while s'il vous plaît. –

+0

Patriots.add (Double.parseDouble (line); // en supposant que votre fichier ne possède que les nombres –

+0

Voulez-vous calculer la moyenne de tous les nombres sur chaque ligne? Ou votre fichier d'entrée ne comporte-t-il qu'un seul numéro par ligne? –

Répondre

0

Je crois que cela aidera.

File fr = new File("Patriots.txt"); 
Scanner sc = new Scanner(fr); 
ArrayList<Double> patriots = new ArrayList<Double>(); 
while(sc.hasNextDouble()){ 
    patriots.add(sc.nextDouble); 
} 
sc.close(); 
+0

Merci !!!! Et si le fichier que je lis d'aussi a des lettres? J'aurais besoin de cordes et de doubles. Comment est-ce que je fais cela avec la liste de tableau. –

+0

Voulez-vous lire les chaînes, aussi? Ou juste les ignorer? –

+0

lisez-les et écrivez-les également dans le nouveau fichier! –

1

Cela devrait fonctionner:

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.PrintWriter; 
import java.util.ArrayList; 
import java.util.Scanner; 

class SD9 { 
    public static void main(String[] args) throws FileNotFoundException { 

     Scanner scanner = new Scanner(new File("Patriots.txt")); 
     PrintWriter writer = new PrintWriter(new File("PatriotsStat.txt")); 
     ArrayList<Double> Patriots = new ArrayList<Double>(); 
     double sum = 0; 
     while (scanner.hasNext()) { 
      double num = scanner.nextDouble(); 
      sum += num; 
      Patriots.add(num); 
     } 
     scanner.close(); 
     for (int i = 0; i < Patriots.size(); i++) { 
      writer.write(Patriots.get(i)+"\n"); 
     } 
     double average = sum/Patriots.size(); 

     writer.write("Average : "+average); 
     writer.close(); 
    } 
} 
0

Le code ne parvient pas à compiler parce que votre code ne suit pas la syntaxe Java correcte pour un try...catch bloc

En Java, un essai ... catch block suit le format suivant:

try { 

    // do something... 

} catch (Exception e) { 

    // handle the exception... 

} 

Dans votre code, vous verrez que vous ayez le code entre votre bloc try et votre bloc catch:

La ligne bw.close() est le coupable.

try { 
    // code 
} 

bw.close(); 

} catch(FileNotFoundException F) { 
    //..... 
} catch(IOException I) { 

} 

En supposant que vous faites cela dans un IDE (NetBeans, Eclipse, etc.), ces informations pertinentes se trouvent dans la fenêtre « Construire la sortie »