Ну вот зачем вы издеваетесь над обучающимися?
1. Заставляете использовать FileReader, который не понимает кодировок.
2. Завтавляете использовать кириллицу в файлах
Программа работает. Без проблем работает с латиницей и с косяками работает с кириллицей. В IDE приходится переключать UTF-8/1251 после каждого прогона, иначе что-то где-то слетает и "файл" становится не равным "файл", соответственно и программа идет в разнос.
Проверочный файл:
файл вид В
В файл я занесу
я занесу вид
В вид этот файл
строку я сочиню
и в файл я положу
и в файл строку я положу
in file we trust
file type is abscent
V type is file
B V type are files
string is not a file
результат1:
В файл я занесу
я занесу вид
строку я сочиню
и в файл я положу
in file we trust
file type is abscent
string is not a file
результат2:
файл вид В
В файл я занесу
я занесу вид
В вид этот файл
строку я сочиню
и в файл я положу
и в файл строку я положу
in file we trust
file type is abscent
string is not a file
Все, что меняется между результатами - еще один пргогон программы без всяких изменений.
Кодировку меняю через File -> Other Settings -> Default Settings -> File Encodings -> Global Encoding
Стоит ли писать, что валидатор не признает программу рабочей?
P.S. Почему-то не обновляется код моей программы...
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/*
Ищем нужные строки
*/
public class Solution {
public static List<String> words = new ArrayList<String>();
static {
words.add("file");
words.add("type");
words.add("V");
words.add("B");
words.add("string");
words.add("строку");
words.add("и");
words.add("файл");
words.add("вид");
words.add("В");
}
public static void main(String[] args) throws IOException{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
BufferedReader br = new BufferedReader(new FileReader(fileName));
// BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "cp1251"));
int number = 0;
while (br.ready()) {
String str = br.readLine();
String[] tmp = str.split(" ");
for (int i = 0; i < tmp.length; i++) {
for (int j = 0; j < words.size(); j++) {
if (tmp[i].equals(words.get(j))) {
number++;
}
}
}
if (number < 3) {
System.out.println(str);
}
number = 0;
}
br.close();
}
}