fork download
  1. import java.util.Scanner;
  2.  
  3. // Base class
  4. class Person {
  5. String name;
  6. int age;
  7.  
  8. Person(String name, int age) {
  9. this.name = name;
  10. this.age = age;
  11. }
  12.  
  13. void displayInfo() {
  14. System.out.println("Name: " + name + ", Age: " + age);
  15. }
  16. }
  17.  
  18. // Derived class
  19. class Student extends Person {
  20. int numSubjects;
  21. double[] grades;
  22.  
  23. Student(String name, int age, int numSubjects) {
  24. super(name, age);
  25. this.numSubjects = numSubjects;
  26. this.grades = new double[numSubjects];
  27. }
  28.  
  29. void inputGrades(Scanner sc) {
  30. for (int i = 0; i < numSubjects; i++) {
  31. double grade;
  32. do {
  33. System.out.print("Enter grade for subject " + (i + 1) + ": ");
  34. grade = sc.nextDouble();
  35. if (grade < 0 || grade > 100) {
  36. System.out.println("Invalid grade. Please enter between 0 and 100.");
  37. }
  38. } while (grade < 0 || grade > 100);
  39. grades[i] = grade;
  40. }
  41. }
  42.  
  43. double calculateGPA() {
  44. double total = 0;
  45. for (int i = 0; i < numSubjects; i++) {
  46. total += grades[i];
  47. }
  48. return total / numSubjects;
  49. }
  50.  
  51. String getLetterGrade(double gpa) {
  52. if (gpa >= 90) return "A";
  53. else if (gpa >= 80) return "B";
  54. else if (gpa >= 70) return "C";
  55. else if (gpa >= 60) return "D";
  56. else return "F";
  57. }
  58.  
  59. void displayGrades() {
  60. for (int i = 0; i < numSubjects; i++) {
  61. System.out.println("Subject " + (i + 1) + ": " + grades[i]);
  62. }
  63. }
  64. }
  65.  
  66. public class Main {
  67. public static void main(String[] args) {
  68. Scanner sc = new Scanner(System.in);
  69. System.out.print("Enter number of students: ");
  70. int numStudents = sc.nextInt();
  71.  
  72. Student[] students = new Student[numStudents];
  73.  
  74. for (int i = 0; i < numStudents; i++) {
  75. System.out.println("\nEnter details for Student " + (i + 1));
  76. sc.nextLine(); // Clear buffer
  77. System.out.print("Name: ");
  78. String name = sc.nextLine();
  79. System.out.print("Age: ");
  80. int age = sc.nextInt();
  81. System.out.print("Number of subjects: ");
  82. int numSubjects = sc.nextInt();
  83.  
  84. students[i] = new Student(name, age, numSubjects);
  85. students[i].inputGrades(sc);
  86. }
  87.  
  88. System.out.println("\n--- GPA Report ---");
  89. for (int i = 0; i < numStudents; i++) {
  90. students[i].displayInfo();
  91. students[i].displayGrades();
  92. double gpa = students[i].calculateGPA();
  93. System.out.printf("GPA: %.2f\n", gpa);
  94. System.out.println("Letter Grade: " + students[i].getLetterGrade(gpa));
  95. System.out.println("----------------------");
  96. }
  97.  
  98. sc.close();
  99. }
  100. }
  101.  
Success #stdin #stdout 0.25s 59340KB
stdin
2
Ali
18
3
90
85
80
Sara
19
2
78
88
stdout
Enter number of students: 
Enter details for Student 1
Name: Age: Number of subjects: Enter grade for subject 1: Enter grade for subject 2: Enter grade for subject 3: 
Enter details for Student 2
Name: Age: Number of subjects: Enter grade for subject 1: Enter grade for subject 2: 
--- GPA Report ---
Name: Ali, Age: 18
Subject 1: 90.0
Subject 2: 85.0
Subject 3: 80.0
GPA: 85.00
Letter Grade: B
----------------------
Name: Sara, Age: 19
Subject 1: 78.0
Subject 2: 88.0
GPA: 83.00
Letter Grade: B
----------------------