Суммирование двухмерного массива оценок по субъекту [дублировать]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Суммирование двухмерного массива оценок по субъекту [дублировать]

Сообщение Anonymous »

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

Код: Выделить всё

Name, ID, Department, Q1, Q2, Q3, Q4, Q5, A1, A2, A3, A4, A5, Midterm, Final
Ethan Adams, 805123456, Computer Science, 7, 9, 6, , , 25, 22, , , , 88,
Lucas Anderson, 806234567, Mathematics, 6, 8, 7, , , 20, 18, , , , 75,
Benjamin Brown, 805345678, Computer Science, 9, 10, 8, , , 28, 24, , , , 92,
Michael Carter, 806456789, Electrical Computer Engineering, 5, 6, 7, , , 22, 20, , , , 68,
Daniel Clark, 805567890, Computer Science, 8, 7, 9, , , 26, 25, , , , 85,
James Davis, 806678901, Biology, 6, 5, 7, , , 18, 21, , , , 71,
William Evans, 805789012, Computer Science, 7, 8, 6, , , 27, 26, , , , 90,
Alexander Garcia, 806890123, Mathematics, 9, 10, 10, , , 30, 29, , , , 97,
Henry Harris, 805901234, Computer Science, 5, 6, 5, , , 19, 17, , , , 65,
Oliver Johnson, 806012345, Computer Science, 8, 9, 9, , , 25, 27, , , , 89,
Matthew King, 805123457, Electrical Computer Engineering, 6, 5, 8, , , 20, 19, , , , 73,
Daniel Lee, 806234568, Computer Science, 9, 8, 10, , , 28, 30, , , , 95,
Sebastian Lewis, 805345679, Biology, 7, 6, 7, , , 22, 24, , , , 78,
David Martinez, 806456780, Mathematics, 8, 9, 7, , , 25, 23, , , , 87,
Joseph Miller, 805567891, Computer Science, 5, 6, 6, , , 18, 20, , , , 70,
Jack Robinson, 806678902, Computer Science, 9, 10, 8, , , 30, 28, , , , 98,
Ryan Scott, 805789013, Electrical Computer Engineering, 6, 7, 5, , , 21, 22, , , , 72,
Andrew Thomas, 806890124, Computer Science, 7, 9, 6, , , 26, 27, , , , 84,
Nathan White, 805901235, Biology, 8, 7, 9, , , 24, 23, , , , 86,
< /code>
Это мой код до сих пор он в настоящее время очень грязный: < /p>
package ManagementSystem;

import java.io.BufferedReader;
import java.io.FileReader;
import java.nio.file.FileSystems;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/* TODO:
[LAB1]  Load grade data src/Data/grades.txt
Implement a procedure to print/summarize grades

*/
public class GradeManagementSystem {
public static void main(String[] args) throws Exception {
System.out.println("GMS - Grade Management System On.");

String dataGrades = "grades";
String filePath = FileSystems.getDefault().getPath(System.getProperty("user.dir"), "src", "Data", dataGrades + ".txt").toAbsolutePath().toString();
File inputFile = new File(filePath);
System.out.println("Loading grades is complete.");

int numStudents = 19, numCourseWorks = 12 + 3;
String[][] grades = new String[numStudents + 1][numCourseWorks];
/*
TODO: Implement a procedure to load all grades
*/
String GradelineHolder;
BufferedReader GradeReader = new BufferedReader(new FileReader(inputFile));
String Delimiter = ",";
String GradeSplitingholder;
String[] Gradesplitarray = new String[numCourseWorks];
String[] GradeReaderString = new String[numStudents + 1];

for (int i = 0; i < numStudents + 1; i++) {
GradeReaderString[i] = GradeReader.readLine();
//GradeReaderString gets the line
for (int b = 0; b < numCourseWorks; b++) {
GradelineHolder = GradeReaderString[i];
//GradeReaderString gives the line to Grade line holder
Gradesplitarray = GradelineHolder.split(",");
//GradelineHolder gives the line to Gradesplitarray after splitting at every ,
grades[i][b] = Gradesplitarray[b];
//Gradesplitarrray puts the line segments into every collum of i

}

}

if (args[0].equals("grades")) {

printGrades(grades, numStudents, numCourseWorks);
} else if (args[0].equals("summary")) {
System.out.println("[TODO] You need to summarize the grades of students");

summarizeGrades(grades, numStudents, numCourseWorks);
}
}

// TODO: these formatted printing method should be used
// print the grade table
public static void printGrades(String[][] grades, int numStudents, int numCourseWorks) {

int b = 0;
for (int i = 0; i < numStudents + 1;  i++) {

System.out.printf("%-20.20s %-10s %-15.15s %-4s %-4s %-4s %-4s %-4s %-4s %-4s %-4s %-4s %-4s %-5s %-5s\n", grades[i][b], grades[i][b + 1], grades[i][b + 2], grades[i][b + 3], grades[i][b + 4], grades[i][b + 5], grades[i][b + 6], grades[i][b + 7], grades[i][b + 8], grades[i][b + 9], grades[i][b + 10], grades[i][b + 11], grades[i][b + 12], grades[i][b + 13], grades[i][b + 14]);

}

}

public static void summarizeGrades(String[][] grades, int numStudents, int numCourseWorks) {
System.out.printf("%-35.35s %-3s %-4s %-4s %-4s %-4s %-4s %-4s %-4s %-4s %-4s %-4s %-5s %-5s\n", "Department", "Number", "Q1", "Q2", "Q3", "Q4", "Q5", "A1", "A2", "A3", "A4", "A5", "Mid", "Final");

String DepartmentHolder;
int iHolder;
String[][] GradesSummarized = new String[numStudents][numCourseWorks];
List Departments = new ArrayList();
int NumberofDepartments = 0;
int c = 0;
double[][] valuesofGradebyDepartment = new double[50][120];
for (int i = 1; i < numStudents + 1; i++) {
DepartmentHolder = grades[i][2];
if (Departments.contains(DepartmentHolder)) {

iHolder = (Departments.indexOf(DepartmentHolder));
String DeptAddedValue;
int dw = Integer.parseInt(GradesSummarized[iHolder][1]) + 1;
String dwstring = String.valueOf(dw);
GradesSummarized[Departments.indexOf(DepartmentHolder)][1] = dwstring;
for (int b = 3; b < numCourseWorks; b++) {

if (!grades[Departments.indexOf(DepartmentHolder)][b].isEmpty()) {
break;
} else {
valuesofGradebyDepartment[Departments.indexOf(DepartmentHolder)][b - 3] = Double.parseDouble(grades[i][b]);

}

}

} else {
Departments.add(DepartmentHolder);
GradesSummarized[Departments.indexOf(DepartmentHolder)][0] = DepartmentHolder;
GradesSummarized[Departments.indexOf(DepartmentHolder)][1] = "1";
NumberofDepartments++;
for (int b = 3; b < numCourseWorks; b++) {

if (!grades[Departments.indexOf(DepartmentHolder)][b].isEmpty()) {
break;
} else {
valuesofGradebyDepartment[Departments.indexOf(DepartmentHolder)][b - 3] = Double.parseDouble(grades[i][b]);

}

}

}

}

for (int i = 0; i < NumberofDepartments + 1; i++) {
if (i == NumberofDepartments) {
System.out.println(" All " + numStudents);
break;
}

System.out.println(GradesSummarized[i][0] + " " + GradesSummarized[i][1]);
// System.out.printf("%-20.20s %-10s %-15.15s %-4s %-4s %-4s %-4s %-4s %-4s %-4s %-4s %-4s %-4s %-5s %-5s\n", GradesSummarized[i][c], GradesSummarized[i][c + 1], GradesSummarized[i][c+ 2], GradesSummarized[i][c + 3], GradesSummarized[i][c + 4], GradesSummarized[i][c + 5], GradesSummarized[i][c + 6], GradesSummarized[i][c + 7], GradesSummarized[i][c + 8], GradesSummarized[i][c + 9], GradesSummarized[i][c + 10], GradesSummarized[i][c+ 11], GradesSummarized[i][c+ 12], GradesSummarized[i][c + 13], GradesSummarized[i][c+ 14]);
//for (int b = 3; b < numCourseWorks; b++) {
for (int b = 0; b < 5; b++) {
//  System.out.println(valuesofGradebyDepartment[4][4]);
// System.out.println(GradesSummarized[i][b]);

}
}
int StudentTotal;

}

/*
TODO: summarize grades (average for each coursework by department)
Read the description carefully!
*/

// class Department() {

}
//}
Это то, что мне нужно печатать: введите описание изображения здесь
Любые предложения были бы очень полезны.

Подробнее здесь: https://stackoverflow.com/questions/797 ... by-subject
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»