Anonymous
Суммирование двухмерного массива оценок по субъекту [дублировать]
Сообщение
Anonymous » 16 сен 2025, 01:07
Я пытался суммировать множество оценок от департамента. Я смог разделить оценки, а затем распечатать их в струнном массиве, но мне нужно отобразить среднее значение по каждым дистанциям в течение первой секунды и т. Д.
Код: Выделить всё
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
1757974077
Anonymous
Я пытался суммировать множество оценок от департамента. Я смог разделить оценки, а затем распечатать их в струнном массиве, но мне нужно отобразить среднее значение по каждым дистанциям в течение первой секунды и т. Д.[code]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() { } //} [/code] Это то, что мне нужно печатать: введите описание изображения здесь Любые предложения были бы очень полезны. Подробнее здесь: [url]https://stackoverflow.com/questions/79765330/summarizing-a-2d-array-of-grades-by-subject[/url]