import [Link].
Scanner;
public class Grading_System {
static final int NUM_STUDENTS = 4;
static final int NUM_SUBJECTS = 5;
static String[] subjects = {"Maths", "Kiswahili", "English", "Arts", "Science"};
public static void main(String[] args) {
try (Scanner scanner = new Scanner([Link])) {
String[] studentNames = new String[NUM_STUDENTS];
float[][] subjectMarks = new float[NUM_STUDENTS][NUM_SUBJECTS]; // Stores subject
marks
float[][] studentAverages = new float[NUM_STUDENTS][NUM_SUBJECTS];
for (int i = 0; i < NUM_STUDENTS; i++) {
[Link]("\nEnter details for Student " + (i + 1));
// Input for student's name
[Link]("Enter student name: ");
studentNames[i] = [Link]();
// Loop for each subject to input marks
for (int j = 0; j < NUM_SUBJECTS; j++) {
[Link]("Enter marks for " + subjects[j] + ": ");
subjectMarks[i][j] = [Link](); // Store subject marks
}
// Now prompt for opener, midTerm, and endTerm marks after all subjects are entered
[Link]("Opener marks: ");
float opener = [Link]();
[Link]("Enter midTerm marks: ");
float midTerm = [Link]();
[Link]("endTerm marks: ");
float endTerm = [Link]();
[Link](); // Consume newline character
// Calculate average marks for all subjects
for (int j = 0; j < NUM_SUBJECTS; j++) {
studentAverages[i][j] = (subjectMarks[i][j] + opener + midTerm + endTerm) / 3; //
Average with opener, midTerm, endTerm
[Link]("\nGenerating reports for all students...\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
[Link]("Report for " + studentNames[i]);
for (int j = 0; j < NUM_SUBJECTS; j++) {
[Link](subjects[j] + " Average: " + studentAverages[i][j]);
printGrade(studentAverages[i][j]);
[Link]("---------------------------");
}
}
// Method to print and determine grades
public static void printGrade(float average) {
if (average < 40) {
[Link]("Grade: Below Expectation");
} else if (average < 50) {
[Link]("Grade: Approaches Expectation");
} else if (average < 70) {
[Link]("Grade: Meets Expectation");
} else {
[Link]("Grade: Exceeds Expectation");