Домашнее задание просит меня реализовать программу, которая считает слова в одном или нескольких файлах (имена файлов указываются в качестве аргументов в командной строке), начиная новый поток для каждого файла.
Вот моя проблема: метод run () не может вызвать IOException, потому что метод run () в интерфейсе Runnable не выбрасывает его.Я обошел все предупреждения компилятора, поместив вызовы конструктора File и Scanner в конструктор моего класса, который реализует Runnable, но даже сейчас, когда он хорошо компилируется, я все равно чувствую себя неуютно, как будто делаю что-то не кошерное.Есть мысли?
import java.io.File;
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.IOException;
public class WordCounter implements Runnable {
File inFile;
Scanner in;
int characters;
int words;
int lines;
int[] counted;
public WordCounter(String aFile) throws FileNotFoundException {
inFile = new File(aFile);
in = new Scanner(inFile);
counted = new int[3];
}
public int[] getTotals() {
return counted;
}
public void run() {
characters = 0;
words = 0;
lines = 0;
while (in.hasNextLine()) {
String thisLine = in.nextLine();
lines++;
Scanner line = new Scanner(thisLine);
while (line.hasNext()) {
String thisWord = line.next();
words++;
characters++; // because each call to line.next() strips a whitespace character
Scanner word = new Scanner(thisWord);
word.useDelimiter("");
while (word.hasNext()) {
char ch = word.next().charAt(0);
characters++;
}
}
}
counted[0] = characters;
counted[1] = words;
counted[2] = lines;
}
}