Ваш sc.close()
вызов является последним оператором в while
l oop. Переместите его после }
. Но , если есть исключение, ваш текущий код пропускает дескриптор файла. Это не хорошо. Лучше переместить вызов close
в блок finally. Еще лучше, они добавили try-with-Resources
, потому что это громоздко (и правильно обращаться с близким трудно). Чтобы использовать это, это было бы что-то вроде
public static void readFile(String filename){
try (Scanner sc = new Scanner(new File(filename))) {
cities = new ArrayList<>(); // Diamond Operator
while (sc.hasNext()) {
cities.add(new City(sc.nextInt(),sc.nextInt(),sc.nextInt()));
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}