Перед цикл может быть, собрать команду:
List<Team> teams = new ArrayList<>();
Внутри проверки петли, что вы действительно 7 полей (думаю, пустых строк, ошибки данных)
if (newStrings.length != 7) {
System.out.println("Error in line: " + currentLine);
continue; // Still handle rest
}
Кроме того, как вы раскол по всей линии, забудьте сканер lineScanner, он лишний.
while ((currentLine = bufferedReader().readLine()) != null) {
или более читаемым:
for (;;) {
String currentLine = bufferedReader().readLine();
if (currentLine == null) {
break;
}
На петли:
teams.add(newTeam):
что-то вроде:
List<Team> readTeams() throws IOException {
OUDialog.alert("Select input file for " + this.getPoolName());
String fileName = OUFileChooser.getFilename();
Path aFile = Paths.get(fileName);
try (BufferedReader bufferedFileReader = Files.newBufferedReader(aFile)) {
String currentLine = bufferedFileReader.readLine();
if (currentLine != null && currentLine.equals(this.getPoolName())) {
List<Team> teams = new ArrayList<>();
while ((currentLine = bufferedReader.readLine()) != null) {
String[] newStrings = currentLine.split(",");
if (teams.length == 0) {
continue; // Allow empty lines
}
if (teams.length != 7) {
throw new IOException("Wrong line:" + currentLine);
}
Team newTeam = new Team(newStrings[0]);
newTeam.setWon(Integer.valueOf(newStrings[1]));
newTeam.setDrawn(Integer.valueOf(newStrings[2]));
newTeam.setLost(Integer.valueOf(newStrings[3]));
newTeam.setFourOrMoreTries(Integer.valueOf(newStrings[4]));
newTeam.setSevenPointsOrLess(Integer.valueOf(newStrings[5]));
newTeam.setTotalPoints(Integer.valueOf(newStrings[6]));
teams.add(newTeam);
}
return teams;
} else {
throw new IOException("Wrong file selected");
}
} // Closes always.
}
В этом сообщении сообщается об ошибках.
см. Здесь, в строке '' Германия, 5,3,6,2,3 ", общие значения, разделенные запятой, равны 6. Таким образом, очевидно, что если вы попытаетесь использовать' newStrings [6] ', он будет вызывать' ArrayIndexOutOfBoundsException '. –
Вы пытаетесь прочитать 7 элементов (от индекса 0 до 6), но ваш пример содержит только 6 элементов. Поэтому в этой строке это не удастся:> NewTeam.setTotalPoints (Integer.valueOf (newStrings [6])); – User404
если я удалю «NewTeam.setTotalPoints (Integer.valueOf (newStrings [6]))« Затем я получаю «ArrayIndexOutOfBoundsException: 1» - Почему это? – fmorgan91