-4

I was asked to create a java OOP program with the following specifications:

Student Grade Name : String Id : String math grade : double english grade : double science grade : double Average () : double printInfo () : void

The Instructions are:

1)Create Student Grade Class

2)Create an Array of 10 Student

3) Enter Grade info using Keyboard

4) Print list of students (name and average)

My problem is every time I run the public class StudentGradeApp2 it always gives me this error

 Exception in thread "main" java.lang.NullPointerException
  at javaDay3.StudentGradeApp2.main(StudentGradeApp2.java:15)

Now i do not know what to put on this portion:

public static void printTheStudentDetails (StudentGrade info) {

please oh please help me

My codes are: StudentGrade Class:

    package javaDay3;

    public class StudentGrade {

            String name;
            String id;
            double mathgrade;
            double enggrade;
            double scigrade;

            public void printInfo() {
                System.out.println("Math = " + mathgrade);
                System.out.println("English = " + enggrade);
                System.out.println("Science = " + scigrade);
                System.out.println( "Average = " + average());
        }
        public double average () {
            return ((mathgrade + enggrade + scigrade) / 3);
    }
        public void printCompleteInformation() {
            System.out.println("Name = " + name);
            System.out.println("ID = " + id);
            System.out.println("Math = " + mathgrade);
            System.out.println("English = " + enggrade);
            System.out.println("Science = " + scigrade);
            System.out.println( "Average = " + average());
        }
        public void printNeed () {
            System.out.println("Name = " + name);
            System.out.println( "Average = " + average());
        }   
    }

StudentGradeApp Class:

    package javaDay3;

    import java.util.Scanner;

    public class StudentGradeApp {

        public static void main(String[] args) {
            // TODO Auto-generated method stub

            StudentGrade stud1 = new StudentGrade ();
            stud1.name = "SpongeBop SquarePants";
            stud1.id = ("Student 1");
            stud1.mathgrade = 72;
            stud1.enggrade = 80;
            stud1.scigrade = 90;
            stud1.average();

            StudentGrade stud2 = new StudentGrade ();
            stud2.name = "Patrick Star";
            stud2.id = ("Student 2 ");
            stud2.mathgrade = 72;
            stud2.enggrade = 85;
            stud2.scigrade = 91;
            stud2.average();

            StudentGrade stud3 = new StudentGrade ();
            stud3.name = "Squidward Tentacles";
            stud3.id = ("Student 3" );
            stud3.mathgrade = 90;
            stud3.enggrade = 85;
            stud3.scigrade = 95;
            stud2.average();

            StudentGrade stud4 = new StudentGrade ();
            stud4.name = "Eugene H. Krabs";
            stud4.id = ("Student 4");
            stud4.mathgrade = 95;
            stud4.enggrade = 85;
            stud4.scigrade = 95;
            stud4.average();

            StudentGrade stud5 = new StudentGrade ();
            stud5.name = "Sandy Cheeks";
            stud5.id = ("Student 5");
            stud5.mathgrade = 75;
            stud5.enggrade = 75;
            stud5.scigrade = 95;
            stud5.average();

            StudentGrade stud6 = new StudentGrade ();
            stud6.name = "Gary the Snail";
            stud6.id = ("Student 6");
            stud6.mathgrade = 75;
            stud6.enggrade = 74;
            stud6.scigrade = 95;
            stud6.average();

            StudentGrade stud7 = new StudentGrade ();
            stud7.name = "Sheldon J Plankton";
            stud7.id = ("Student 7 ");
            stud7.mathgrade = 79;
            stud7.enggrade = 76;
            stud7.scigrade = 75;
            stud7.average();

            StudentGrade stud8 = new StudentGrade ();
            stud8.name = "Larry The Lobster";
            stud8.id = ("Student 8");
            stud8.mathgrade = 79;
            stud8.enggrade = 76;
            stud8.scigrade = 75;
            stud8.average();

            StudentGrade stud9 = new StudentGrade ();
            stud9.name = "King Neptune";
            stud9.id = ("Student 9 ");
            stud9.mathgrade = 79;
            stud9.enggrade = 96;
            stud9.scigrade = 75;
            stud9.average();

            StudentGrade stud10 = new StudentGrade ();
            stud10.name = "Pearl Krabs";
            stud10.id = ("Student 10 ");
            stud10.mathgrade = 79;
            stud10.enggrade = 76;
            stud10.scigrade = 75;
            stud10.average();

            /*stud1.printInfo();
            System.out.println(" ");
            stud2.printInfo();
            System.out.println(" ");
            stud3.printInfo();
            System.out.println(" ");
            stud4.printInfo();
            System.out.println(" ");
            stud5.printInfo();
            System.out.println(" ");
            stud3.printInfo();
            System.out.println(" ");
            stud6.printInfo();
            System.out.println(" ");
            stud7.printInfo();
            System.out.println(" ");
            stud8.printInfo();
            System.out.println(" ");
            stud9.printInfo();
            System.out.println(" ");
             stud10.printInfo(); */
        }
        public static void printTheStudentDetails (StudentGrade info) {
    }
    }

StudentGradeApp2 Class:

    import java.util.Scanner;

    public class StudentGradeApp2 {

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            StudentGrade studgrad [] = new StudentGrade [10];

            Scanner scanner = new Scanner (System.in);
            for(int i = 0; i <= studgrad.length; i++) {

                System.out.print("Enter Math Grade = ");
                studgrad[i].mathgrade = scanner.nextInt();

                System.out.print("Enter English Grade = ");
                studgrad[i].enggrade = scanner.nextInt();

                System.out.print("Enter Science Grade = ");
                studgrad[i].scigrade = scanner.nextInt();

        }
            for(StudentGrade info:studgrad)
                info.printInfo();
                scanner.close();
    }
    }
Ruchira Gayan Ranaweera
  • 34,993
  • 17
  • 75
  • 115
igna rapacon
  • 15
  • 1
  • 5

3 Answers3

2

You have below issues with posted code for StudentGradeApp2 :

  • You got java.lang.NullPointerException at studgrad[i].mathgrade. It is equivalent to invoking null.mathgrade.
  • mathgrade, enggrade, scigrade in StudentGrade are double and you are using scanner.nextInt()
  • For loop condition is incorrect

PFB corrected implementation:

package javaDay3;

import java.util.Scanner;

public class StudentGradeApp2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        StudentGrade studgrad[] = new StudentGrade[10];

        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < studgrad.length; i++) {

            StudentGrade sg = new StudentGrade();

            System.out.print("Enter Math Grade = ");
            sg.mathgrade = Double.parseDouble(scanner.nextLine());

            System.out.print("Enter English Grade = ");
            sg.enggrade = Double.parseDouble(scanner.nextLine());

            System.out.print("Enter Science Grade = ");
            sg.scigrade = Double.parseDouble(scanner.nextLine());

            studgrad[i] = sg;
        }

        for (StudentGrade info : studgrad)
            info.printInfo();
        scanner.close();
    }
}
Rajesh
  • 2,135
  • 1
  • 12
  • 14
1

Now i do not know what to put on this portion:

public static void printTheStudentDetails (StudentGrade info) {

You need a list to add all the Student grades

List<> studentList = new ArrayList<StudentGrade>();
studentList.add(stud1);
studentList.add(stud2);

Everytime you create a new StudentGrade object add it to the list.

In your StudentGrade class override the toString() method

Now in your method printTheStudentDetails pass the student's list studentList

public static void printTheStudentDetails (List<StudentGrade> list) {    
   System.out.println(list);    
}
Community
  • 1
  • 1
underdog
  • 4,447
  • 9
  • 44
  • 89
0

Debug the code around where you are getting your issue. You'll find that your object is null. Don't forget to add your data to a list so you can use them.

Grinch91
  • 952
  • 7
  • 15