Java-Try-und Catch IOException Problem
Ich versuche, mit ein bisschen code, den ich gefunden an der Unterseite von auf dieser Seite. Hier ist der code in einer Klasse, die ich für Sie erstellt:
import java.io.LineNumberReader;
import java.io.FileReader;
import java.io.IOException;
public class LineCounter {
public static int countLines(String filename) throws IOException {
LineNumberReader reader = new LineNumberReader(new FileReader(filename));
int cnt = 0;
String lineRead = "";
while ((lineRead = reader.readLine()) != null) {}
cnt = reader.getLineNumber();
reader.close();
return cnt;
}
}
Mein Ziel ist die Zählung der Zeilen einer text-Datei speichern, die Anzahl als eine ganze Zahl, dann verwenden Sie, dass integer in meiner main-Klasse. In meiner main-Klasse, ich habe versucht ein paar verschiedene Möglichkeiten, dies zu realisieren, aber (ein neuer Programmierer) bin ich etwas fehlt. Hier ist das erste, was ich versucht habe:
String sFileName = "MyTextFile.txt";
private int lineCount = LineCounter.countLines(sFileName);
Mit diesem Versuch bekomme ich die Fehlermeldung "unreported exception java.io.IOException; muss abgefangen werden oder erklärt werden geworfen." Ich verstehe nicht, warum ich immer bin das, weil wie ich sehen kann, die Ausnahme ist erklärt in meinem "countLines" - Methode. Ich versuchte, mit einem try-catch-block direkt unter das Letzte bit der code, den ich gepostet, aber das hat nicht funktioniert (ich glaube nicht, ich habe es richtig wenn). Hier ist meiner try-catch-Versuch:
String sFileName = "MyTextFile.txt";
private int lineCount;{
try{
LineCounter.countLines(sFileName);
}
catch(IOException ex){
System.out.println (ex.toString());
System.out.println("Could not find file " + sFileName);
}
}
Bitte zeige mir den Weg! Vielen Dank im Voraus für Eure Hilfe!
InformationsquelleAutor ubiquibacon | 2010-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Initialisierung-block ist wie jede bit-code; es ist nicht "angehängt", um jedes Feld/Methode vorangehen. Zuweisen von Werten zu Feldern, müssen Sie explizit das Feld als die lhs einer Zuweisungsanweisung.
Auch, Ihre
countLines
werden kann, einfacher gemacht:Basierend auf meinen test, wie es aussieht, kann
getLineNumber()
nachclose()
.Ihre erste bit der code funktioniert perfekt! Ich war so nah 🙂 Ihr zweites bit der code funktioniert auch, aber NetBeans sagt mir der while-Schleife leer ist. Das Programm noch kompiliert und läuft ok, so dass ich denke, dass ist akzeptabel?
Es ist einfach zu ignorieren, den Inhalt. Sie sind eigentlich nur daran interessiert, die Höhe der Zeilen. Alternativ können Sie auch verwenden
BufferedReader
in Kombination mitint count
die Sie Inkrementieren in der Schleife.Ich habe die
countLines
wieder so ähnlich wie das, was Sie vor hatte.ja, du hast Recht über den nicht-statischen Teil. Behoben.
InformationsquelleAutor polygenelubricants
Dem Grund, dass Sie immer die die IOException ist, weil Sie nicht fangen die IOException Ihrer Methode countLines. Sie wollen etwas wie das hier tun:
InformationsquelleAutor JasCav
Ihre
countLines(String filename)
Methode throws IOException.Können Sie es nicht verwenden in einem EU-Erklärung. Sie benötigen zum ausführen des Vorgangs in einer
main(String[] args)
Methode.Ihre
main(String[] args)
Methode erhalten die IOException geworfen, um es von countLines und wird es brauchen, zu behandeln oder zu erklären.Versuchen, dieses zu werfen die IOException von Haupt -
oder diese zu behandeln und wickeln Sie es in ein ungeprüfter IllegalArgumentException:
InformationsquelleAutor brabster