I've been studying Java on my own. I've had this problem which I tried to debug for days but to no avail.
How do I reference grades[0] to lab.score(60) so I can use it in my toString
method? I'm trying to assign the score number to lab and references to grade[0] so that I can use it in the main as shown in my code below but all I get is this error:
Exception in thread "main" java.lang.NullPointerException
at CourseGrades.toString(CourseGrades.java:35)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at CourseGrades.main(CourseGrades.java:58)
My Code:
import java.util.Scanner;
public class CourseGrades {
private GradedActivity grades[] = new GradedActivity[3];
public void setLab(GradedActivity lab)
{
lab = new GradedActivity();
lab.setScore(60);
grades[0] = lab;
}
public void setPassFailExam(PassFailExam passfailexam)
{
passfailexam = new PassFailExam(10,6,70);
grades[1] = passfailexam;
}
public void setEssay(Essay essay)
{
essay = new Essay(80);
grades[2]= essay;
}
public void setFinalExam(FinalExam finalexam)
{
finalexam = new FinalExam(50,4);
grades[3] = finalexam;
}
public String toString()
{
String str = "Lab Score: " + grades[0].getScore() +
"\tGrade: " +
"\nPass/Fail Exam Score: " +
"\tGrade: " +
"\nEssay Score: " +
"\tGrade: " +
"\nFinal Exam Score: " +
"\tGrade: " ;
return str;
}
public static void main(String[] args)
{
CourseGrades kk = new CourseGrades();
String st = kk + "testing";
System.out.println(st);
}
public class GradedActivity
{
private double score;
public void setScore(double s)
{
score = s;
}
public double getScore()
{
return score;
}
public char getGrade()
{
char letterGrade;
if (score >=90)
letterGrade ='A';
else if (score>=80)
letterGrade ='B';
else if (score >=70)
letterGrade ='C';
else if (score >=60)
letterGrade = 'D';
else
letterGrade = 'F';
return letterGrade;
}
}