Вы можете изменить функцию createNamesArray () и избавиться от closeNameFiles () и openNameFile ()
Я обновил ваш World.java (если вы используете java: 8)
public class World {
private static final int MAX_PLAYERS = 42;
private static String firstNamesArray[] = new String[MAX_PLAYERS];
private static String lastNamesArray[] = new String[MAX_PLAYERS];
private static int firstNameEntriesInFile;
private static int lastNameEntriesInFile;
public static void printNamesArrays() {
System.out.println("");
System.out.println("First names available");
System.out.println("---------------------");
for (int i = 0; i < MAX_PLAYERS && i < firstNameEntriesInFile; ++i) {
System.out.println(firstNamesArray[i]);
}
System.out.println("");
System.out.println("Lats names available");
System.out.println("---------------------");
for (int i = 0; i < MAX_PLAYERS && i < lastNameEntriesInFile; ++i) {
System.out.println(lastNamesArray[i]);
}
}
public static void createNameArrays() {
try {
String[] fNames = Files.lines(new File("fullpath/firstname.txt").toPath()).toArray(String[]::new);
if (fNames.length == 0) {
throw new RuntimeErrorException(null, "no first name entry found in the given file");
} else {
firstNameEntriesInFile=fNames.length;
firstNamesArray=fNames;
}
String[] lNames = Files.lines(new File("fullpath/lastname.txt").toPath()).toArray(String[]::new);
if (lastNamesArray.length == 0) {
throw new RuntimeErrorException(null, "no last name entry found in the given file");
}else {
lastNameEntriesInFile=lNames.length;
lastNamesArray=lNames;
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("file can't be accessed: cause " + e.getMessage());
}
}
}
Тем не менее, если вы хотите сделать это по-своему, я предлагаю использовать FileReader
Я бы порекомендовал использовать ArrayList, который обрабатывает динамическое изменение размеров, тогда как для массива требуется определенный размер вверхфронт, который вы можете или не можете знать.Глядя на ваш код, я вижу, что вы уже определили размер.
BufferedReader in = new BufferedReader(new FileReader("fullpath/firstnames.txt"));
String str;
List<String> list = new ArrayList<String>();
while((str = in.readLine()) != null){
list.add(str);
}
firstNamesArray = list.toArray(new String[list.size()]);
аналогично для массива фамилии.
Кроме того, нецелесообразно использовать static в первую очередь потому, что безопасность потоков является вторым Obj-ориентированным понятием.
Не волнуйтесь, мы все были вваши ботинки однажды, тогда мы узнали со временем.Ничего страшного!