2014-11-24 3 views
-1

В настоящее время я беру свой первый класс java и полностью застреваю в упражнении. Я должен читать данные из текстового файла, содержащего идентификаторы студента, и их соответствующие баллы тестов, чтобы программа оценивала их, а затем печатала результаты.Обработка данных из текстового файла в массив

Я как бы понимаю проблему, но книгу, с которой мы работаем, довольно трудно читать. Все это размывается вместе, и я чувствую, что они хотят, чтобы я прочитал две отдельные вещи и сделал логический шаг по тому, как их собрать, и я просто не понимаю.

TTFTFTTTFTFTFFTTFTTF ABC54102 T FTFTFTTTFTTFTTF TF DEF56278 TTFTFTTTFTFTFFTTFTTF ABC42366 TTFTFTTTFTFTFFTTF ABC42586 TTTTFTTT TFTFFFTF

Моя главная проблема в том, что я не вижу, как я связать массив данных у меня есть.

+1

текстовый файл должен иметь какой-то разделитель, как это может быть файл CSV или что-то. не могу сказать без вашего размещения. но прочитайте файл в, и для каждой строки разделите все, что есть разделитель, получите оценку, идентификатор и т. д. по индексу столбца. – sunrize920

+1

Начало обучения программированию - это знать правильную вещь для Google. Ясно, что вы этого не сделаете, поэтому я бы рекомендовал вам выполнить следующие запросы: «как читать строку строки за строкой java», «как разбить строку на запятую java» (или, тем не менее, вещи разделены в файле, который вы указали) , Вероятно, вы должны сделать объектные представления того, что вы читаете из файла, и хранить их в списках массивов. честно отредактируйте свое сообщение, чтобы показать, как выглядит файл, я могу вам помочь. – sunrize920

ответ

3

Я не собираюсь публиковать все решение, но даю несколько шагов для начала.

Следуйте этому примеру

BufferedReader reader = new BufferedReader(new FileReader("/path/to/file.txt")); 
String line = null; 
ArrayList<String> array = new ArrayList<>(); 
while ((line = reader.readLine()) != null) { 
    array.add(line); 
} 

и разделить строку, как этот

str.split(" "); // considering that ids and name are separated by spaces 
+0

Смотрите, но это то, о чем я запутался. Все, что я смотрю на эту тему, начинает бросать вокруг вещи о разделении строки или выполнении x или y, и книга не упоминает об этом. –

+0

Нашли свой ответ полезным? Если да, то отметьте это правильно. Спасибо – Junaid

+0

Что такое Buffered Reader? Могу ли я получить некоторые комментарии, подробно описывающие, что делает каждый шаг? –

0

Таким образом, поскольку пробелы разрешены в списке T, и F, который я предполагаю, что означает, что студент покинул ответьте на вопрос, у вас нет роскоши использовать удобный метод, например split, чтобы легко отделить ответы. Вместо этого мы используем наши знания о том, что количество вопросов должно быть одинаковым, а идентификатор должен иметь общую длину. Вы можете использовать метод подстроки для анализа того, что вам нужно.

Вот некоторые псевдокод:

final int NUM_QUESTIONS = 25; //I didn't actually count, that's your job 
final int ID_LENGTH = 8; 
int currentIndex = 0; 

//assuming you can fit the whole string in memory, which you should in an intro java class 
//do the operations that googling "read a file into a string java" tells you to do in readFileToString 
String fileContents = readFileToString("saidFile.txt"); 


while(fileContents.charAt(currentIndex) != fileContents.length()){ 
    String userAnswers = fileContents.substring(currentIndex, currentIndex+NUM_QUESTIONS); 

    //move index past userAnswers and the space that separates the answers and the id 
    currentIndex = currentIndex + NUM_QUESTIONS + 1; 

    String userId = fileContents.substring(currentIndex, currentIndex+ID_LENGTH) 

    //move currentIndex past userId and the space that separates the userId from the next set of answers 
    currentIndex = currentIndex + ID_LENGTH + 1; 

    //either create an object to store the score with the userId, or print it right away 
    int score = gradeAnswers(userAnswers) 
    System.out.println(userId + " scored " + score); 
} 
Смежные вопросы