Я пытаюсь создать метод split()
, который читает файл по строкам, затем разделяет String
и Integer
s на массив, который затем записывается в другой файл. Я создал массив для хранения каждого String
под названием list
и один для хранения Integer
с именем scores
.Исключение индекса массива вне пределов, но не знаете почему?
Когда я пытаюсь запустить мой код, он достигает второго элемента массива list
, который равен surname = list[1]
, а затем я получаю сообщение об ошибке.
То, что я пытаюсь в конечном итоге сделать, это разделить каждый элемент и получить среднее значение целых чисел, чтобы исходная строка текста читала Mildred Bush 45 65 45 67 65
, и моя новая строка текста будет читать Bush, Mildred: Final score is x.xx
.
ошибка происходит в строке 7 surname = list[1];
Мой код:
public void splitTest()
{
String forename, surname, tempStr, InputFileName, OutputFileName;
tempStr = "";
String[] list = new String[6];
list = tempStr.split(" ");
forename = list[0];
surname = list[1];
int[] scores = new int[5];
scores[0] = Integer.parseInt(list[2]);
scores[1] = Integer.parseInt(list[3]);
scores[2] = Integer.parseInt(list[4]);
scores[3] = Integer.parseInt(list[5]);
scores[4] = Integer.parseInt(list[6]);
FileReader fileReader = null;
BufferedReader bufferedReader = null;
FileOutputStream outputStream = null;
PrintWriter printWriter = null;
clrscr();
System.out.println("Please enter the name of the file that is to be READ (e.g. details.txt) : ");
InputFileName = Genio.getString();
System.out.println("Please enter the name of the file that is to be WRITTEN TO (e.g. newDetails.txt) : ");
OutputFileName = Genio.getString();
try {
fileReader = new FileReader(InputFileName);
bufferedReader = new BufferedReader(fileReader);
outputStream = new FileOutputStream(OutputFileName);
printWriter = new PrintWriter(outputStream);
tempStr = bufferedReader.readLine();
while (tempStr != null) {
System.out.println(tempStr);
printWriter.write(tempStr+"\n");
tempStr = bufferedReader.readLine();
}
System.out.println("\n\nYOUR NEW FILE DATA IS DISPLAYED ABOVE!\n\n");
pressKey();
bufferedReader.close();
printWriter.close();
} catch (IOException e) {
System.out.println("Sorry, there has been a problem opening or reading from the file");
e.printStackTrace();
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
System.out.println("An error occurred when attempting to close the file");
}
}
if(printWriter != null) {
printWriter.close();
}
}
}
Где это говорит Genio
, это класс, который имеет дело с пользовательского ввода.
И начало отсчета в 0. .. – sivi
@Eran Не могли бы вы объяснить, как? Я отредактировал мой код, чтобы объяснить, где именно я получаю ошибку. Благодарю. – DarkBlueMullet
@DarkBlueMullet посмотреть мои правки – Eran