2016-11-25 3 views
0

Erstellen Sie eine Methode namens processFile und rufen Sie sie von main ab, indem Sie den Namen der Datei übergeben, die Sie erstellt haben ("scores.rtf"). Richten Sie in ProcessFile den BufferedReader ein und durchlaufen Sie die Datei, wobei Sie jeden Score lesen. Konvertieren Sie den Score in eine Ganzzahl, addieren Sie sie und berechnen Sie den Mittelwert. Ich habe das getan, und mein Code läuft. Das einzige Problem ist, dass mein Code den Mittelwert nicht berechnet. Irgendeine Idee warum? HierLesen von Noten aus einer Datei

ist der Code, den ich erstellt:

import java.io.*; 

public class ReadTheCode { 

private static double total = 0; 
private static int totalLines = 0; 


public static void main(String[] args) throws IOException, FileNotFoundException { 
    String pathToFile = "scores.rtf"; 
    processFile(pathToFile); 

} 

public static void processFile(String pathToFile) throws IOException, FileNotFoundException { 
    try(BufferedReader br = new BufferedReader(new FileReader(pathToFile))){ 
     BufferedReader inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(pathToFile))); 
     String line = br.readLine(); 
     while (line != null) { 
      double value = Double.parseDouble(line); 
      total = value + total; 
      totalLines = totalLines + 1; 
      System.out.println(value + "%"); 
      line = br.readLine(); 
     } 
     inputReader.close(); 
    } 
} 
} 
+4

Wollen Sie '" Scores.txt "' als String verwenden? –

+0

Beachten Sie auch, dass Ihre Methode den Parameter 'pathToFile' überhaupt nicht verwendet. – Berger

+0

Dieser Code wird nicht kompiliert. –

Antwort

2

Ein paar Dinge, in dem Hauptmechanismus, ich glaube dir, dies zu tun bedeuten.

String pathToFile = "Scores.txt"; 

Beachten Sie, dass es Anführungszeichen hat. Dies macht es zu einem String-Literal.

Auch in Ihrer process Methode,

diese Linie ändern BufferedReader inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(Scores.txt)));

zu

BufferedReader inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(pathToFile))); 

Auf diese Weise Sie verweisen den Parameter, den Sie von Ihrem Haupt Methode übergeben werden.

Ich bemerkte auch, dass Sie 2 Variablen referenzieren, die Sie nirgendwo deklariert haben. Total und TotalLines, ich bin mir also nicht sicher, ob Sie uns Ihren gesamten Code gezeigt haben oder nicht. Wenn Sie uns Ihren gesamten Code gezeigt haben, stellen Sie sicher, dass Sie diese Variablen irgendwo deklarieren. Sie können dies einfach unter Ihrem public class ReadTheCode {

hinzufügen Dies wird die Variablen deklarieren und initialisieren. Es macht sie auch statisch, so dass Sie in Ihren statischen Methoden darauf zugreifen können. Ich würde jedoch empfehlen, dass Sie in Java-Namenskonventionen schauen, da Variablen mit Kleinbuchstaben beginnen sollten.

private static double Total = 0; 
private static int TotalLines = 0; 
+0

Mein Code für "try (BufferedReader br = neuer BufferedReader (neuer FileReader (Scores.txt))) {" war immer noch falsch, ich habe versucht, den "Scores.txt" -Teil in "pathToFile" zu ändern, aber das hat nicht funktioniert, irgendeine Idee, was damit falsch wäre? – Lexi

+0

Was meinst du mit inkorrekt? Erhalten Sie beim Kompilieren oder Ausführen einen Fehler? – Austin

+0

Es kompiliert perfekt gut, aber läuft nicht. – Lexi