2014-02-13 2 views
0

У меня возникли проблемы с началом этой программы, которые я получил от моего профессора. Вот подсказка и выборка:Java-массивы и внешние файлы

Прочитайте 20 пар чисел (идентификационный номер и оценка соответственно) на два отдельных массива. Найдите средний балл. Распечатайте таблицу, как показано ниже, с идентификатором, оценкой и разницей (средний балл) для каждого учащегося, по одному ученику в строке. Распечатайте сумму, среднее значение и счет счета в начале таблицы, как показано. Круглый средний и разница до 2 знаков после запятой.

Выход:

End of reading from file. 
Sum  = 4853 
Average = 242.65 Count = 20 


Id  Score  Diff 

115 257  14.35 

123  253  10.35 

116 246  3.35 

113 243  0.35 

112 239 -3.65 

104 239 -3.65 

110 238 -4.65 

218 243  0.35 

208 242 -0.65 

222 223 -19.65 

223  230 -12.65 

213 229 -13.65 

207 228 -14.65 

203 224 -18.65 

305 265  22.35 

306 262  19.35 

311 256  13.35 

325 246  3.35 

321 245  2.35 

323 245  2.35 

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

Scanner kbReader = new File("C:\\\Users\\\Guest\\\Documents\\\java programs\\\Prog590b\\\Prog590b.in"); 

Но я не могу найти способ сортировать их в массивах. Я не прошу кого-либо написать весь мой код, но чтобы помочь мне разобраться, как сортировать их в массивы, как подсказка спрашивает. Может ли кто-нибудь дать некоторые рекомендации/отзывы о том, как я могу это сделать? Благодарю.

+3

Пожалуйста, ваш неработающий кода –

+0

Почему преподаватели всегда настаивают на том, это трудный путь? ... Я предполагаю, что есть ценный урок где-то там. –

+0

предоставить вашу файловую структуру Prog590b.in – Mani

ответ

0

Начните с чтения идентификаторов и оценок по строкам и поместите их в два отдельных списка (один для ID, один для оценки). Когда вы достигли этого, остальное должно быть очевидным.

+0

Если бы это было так очевидно для OP, я сомневаюсь, что они опубликуют этот вопрос ... может быть, вы могли бы разработать –

+0

Я думаю, что не так много, чтобы попросить найти возможность читать в файлах построчно. – Smutje

+0

Я не читаю что-то вроде этого: «Прочитайте 20 пар чисел (идентификационный номер и оценка соответственно) на два отдельных массива. Найдите средний балл. Распечатайте таблицу, как показано ниже, идентификатора, оценки и разницы (оценка - средняя) для каждого ученика, по одному ученику на строку. Распечатайте сумму, среднее значение и количество баллов в начале таблицы, как показано на рисунке. В среднем и разнице в 2 десятичных знака ». – Smutje

0

Установка значения в массивах

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

Теперь для оценки вы должны продолжать идти по линии, пока не найдете место после счета. И затем возьмите подстроку этого; от исходного показателя до конечного индекса (вы должны держать счетчик для этого)

Сортировки массивов

Есть много способов сортировки массивов, списки, связанные списки и так далее. Я предлагаю вам искать в Интернете алгоритмы и пытаться проследить через код, чтобы понять, что означает каждая строка кода, и как он сортирует ваш массив. Инструкция if должна работать здесь:

Если вам не все равно о эффективности Я бы предложил вам посмотреть сортировку или сортировку выбора! После того, как вы используете и как работают алгоритмы, вы можете сортировать в зависимости от идентификатора или оценки достаточно легко! :)

Выбор Сортировка: http://en.m.wikipedia.org/wiki/Selection_sort

Надежда, что помогает. :)

0

Прежде всего, ваш сканер объявлен неправильным. вам нужно сделать что-то вроде этого

Scanner kbReader = new Scanner(new File("C:\\Users\\Guest\\Documents\\java programs\\Prog590b\\Prog590b.in")); 

Следующая если файл ID Score {} новой строки и так далее

Вы должны использовать функцию разделения.

while(kbReader.hasNext()){ 
    String line = kbReader.nextLine(); 
    String splitLine = line.split(" "); 

    ArrayID.add(splitLine[0]); 
    ArrayScore.add(splitLine[1]); 
} 
Смежные вопросы