2015-03-24 2 views
0

Я получаю ошибку Исключение в потоке "main" java.lang.NullPointerException при запуске моей программы, и я не знаю, что это значит. Если бы кто-то мог дать мне подсказку, которая была бы очень признательна. Я вставил 3 моих класса. благодаряi get (Исключение в потоке "main" java.lang.NullPointerException) в моей программе

Вся ошибка, что она дает мне это

Exception in thread "main" java.lang.NullPointerException 
at CourseGrades.toString(CourseGrades.java:107) 
at java.lang.String.valueOf(Unknown Source) 
at java.io.PrintStream.println(Unknown Source) 
at TestCourseGrades.main(TestCourseGrades.java:23) 

\t FinalExam finalExam) { 
 

 
\t grade[0] = labMark; 
 
\t grade[1] = passFailExam; 
 
\t grade[2] = essay; 
 
\t grade[3] = finalExam; 
 
\t } 
 

 
\t public void setLab(GradedActivity labMark) { 
 

 
\t grade[0] = labMark; 
 
\t } 
 

 
\t public void setPassFailExam(PassFailExam exam) { 
 

 

 
\t grade[1] = exam; 
 
\t } 
 

 
\t public void setEssay(Essay essay) { 
 

 

 
\t grade[2] = essay; 
 
\t } 
 

 
\t public void setFinalExam(FinalExam finalexam) { 
 

 
\t grade[3] = finalexam; 
 
\t } 
 
\t public double getAverage() { 
 

 
\t double average; 
 

 
\t double total = 0; 
 

 
\t for (GradedActivity currentArrayValue: grade) { 
 
\t  total += currentArrayValue.getScore(); 
 
\t } 
 

 
\t average = total/grade.length; 
 

 
\t return average; 
 

 
\t } 
 

 

 
\t public GradedActivity getLowest() { 
 

 
\t GradedActivity lowest = grade[0]; 
 

 
\t for (GradedActivity currentArrayValue: grade) { 
 
\t  if (currentArrayValue.getScore() > lowest.getScore()) { 
 
\t  lowest = currentArrayValue; 
 
\t  } 
 
\t } 
 

 
\t return lowest; 
 

 

 

 

 
\t } 
 

 

 
\t public GradedActivity getHighest() { // ASK IF THERE IS A WAY TO DO IT WITHOUT ENHCANCED FOR LOOP 
 

 
\t GradedActivity highest = grade[0]; // setting highest to the first value 
 

 
\t for (GradedActivity currentArrayValue: grade) // going through grade array and holding the value in currentArray value 
 
\t { 
 
\t  if (currentArrayValue.getScore() > highest.getScore()) // comparing the current array value being looped with the first value that has been set 
 
\t  { 
 
\t  highest = currentArrayValue; // if the current value is bigger than initial value than we put it as the highest 
 
\t  } 
 
\t } 
 

 
\t return highest; // returs the highest value 
 
\t } 
 

 

 

 
\t public String toString() { 
 
\t String str; // FOR LOOP??? 
 

 
\t str = "Lab Score: " + grade[0].getScore() + ", Grade: " + grade[0].getGrade() + "\n" + 
 
\t  "Pass/Fail Exam Score: " + grade[1].getScore() + ", Grade: " + grade[1].getGrade() + 
 
\t  "Essay Score: " + grade[2].getScore() + ", Grade: " + grade[2].getGrade() + "\n" + 
 
\t  "Final Exam Score: " + grade[3].getScore() + ", Grade: " + grade[3].getGrade(); 
 

 
\t return str; 
 
\t } 
 

 
\t }

public class GradedActivity { 
 

 
    private double score; 
 
    private char letterGrade; 
 

 

 
    public GradedActivity() { 
 

 
    } 
 

 
    public GradedActivity(double lb) { 
 
    score = lb; 
 
    } 
 

 
    public void setScore(double s) { 
 
    score = s; 
 
    } 
 

 
    public void setLabMark(double lb) { 
 
    score = lb; 
 
    } 
 

 

 
    public void setLetterGrade(char lg) { 
 
    letterGrade = lg; 
 
    } 
 
    public double getScore() { 
 
    return score; 
 
    } 
 
    public double getLabMark() { 
 
    return score; 
 
    } 
 

 
    public char getGrade() { 
 

 

 
    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; 
 

 
    } 
 

 

 
    public String toString() { 
 
    String str; 
 
    str = "Score: " + score + " Grade: " + letterGrade; 
 
    return str; 
 
    } 
 
}

import javax.swing.JOptionPane; 
 
public class TestCourseGrades { 
 
    public static void main(String[] args) { 
 

 
    String input; 
 
    double labMark; 
 
    int numQuestions; 
 
    int numMissed; 
 
    double pointsEach; 
 
    int grammar; 
 
    int spelling; 
 
    int correctLength; 
 
    int content; 
 
    CourseGrades course = new CourseGrades(); 
 

 
    //Get lab mark 
 
    input = JOptionPane.showInputDialog("What is your lab mark?"); 
 
    labMark = Double.parseDouble(input); 
 
    GradedActivity lab = new GradedActivity(labMark); 
 
    System.out.println("Lab mark is: " + lab); 
 
    course.setLab(lab); 
 
    System.out.println(course); 
 

 
    //Get pass/fail criteria 
 
    input = JOptionPane.showInputDialog("Pass/Fail exam: How many questions?"); 
 
    numQuestions = Integer.parseInt(input); 
 
    input = JOptionPane.showInputDialog("How many questions missed?"); 
 
    numMissed = Integer.parseInt(input); 
 
    input = JOptionPane.showInputDialog("minium passing mark?"); 
 
    pointsEach = Double.parseDouble(input); 
 
    PassFailExam passFailExam = new PassFailExam(numQuestions, numMissed, pointsEach); 
 
    System.out.println("Pass Fail Exam:\n" + passFailExam); 
 
    course.setPassFailExam(passFailExam); 
 
    System.out.println(course); 
 

 

 
    // Get Essay marks 
 
    input = JOptionPane.showInputDialog("Essay: Grammar out of 30: "); 
 
    grammar = Integer.parseInt(input); 
 
    input = JOptionPane.showInputDialog("Essay: Spelling out of 20: "); 
 
    spelling = Integer.parseInt(input); 
 
    input = JOptionPane.showInputDialog("Essay: Correct Length out of 20: "); 
 
    correctLength = Integer.parseInt(input); 
 
    input = JOptionPane.showInputDialog("Essay: Content out of 30: "); 
 
    content = Integer.parseInt(input); 
 
    Essay essay = new Essay(grammar, spelling, correctLength, content); 
 
    System.out.println("Essay:\n" + essay); 
 
    course.setEssay(essay); 
 
    System.out.println(course); 
 

 
    //Get final exam 
 
    input = JOptionPane.showInputDialog("Final exam: How many questions?"); 
 
    numQuestions = Integer.parseInt(input); 
 
    input = JOptionPane.showInputDialog("How many questions missed?"); 
 
    numMissed = Integer.parseInt(input); 
 
    FinalExam finalExam = new FinalExam(numQuestions, numMissed); 
 
    System.out.println(finalExam); 
 
    course.setFinalExam(finalExam); 
 
    System.out.println(course); 
 
    //Create a course grade 
 
    //Set up the CourseGrades 
 
    CourseGrades courseCS = new CourseGrades(lab, passFailExam, essay, finalExam); 
 
    System.out.println("Test another course:\n" + courseCS); 
 
    System.out.println("The average of all exams is: " + courseCS.getAverage()); 
 
    GradedActivity highest = courseCS.getHighest(); 
 
    GradedActivity lowest = courseCS.getLowest(); 
 
    System.out.println("The highest mark is: " + highest.getScore()); 
 
    System.out.println("The lowest mark is: " + lowest.getScore()); 
 

 
    } 
 
}

`

+0

гребенок я не скопировать весь код для курса классов – cmptUser

+0

вы можете редактировать вопрос для коррекция. – Saif

+0

Возможно, у вашего вопроса уже есть ответ: «Что такое исключение Null Pointer и как его исправить?» (Http://stackoverflow.com/questions/218384/what-is-a-null-pointer -exception-и-как-делать-я-Fix-It) – Pokechu22

ответ

0

Исключение ясно показывает номера строк

at CourseGrades.toString(CourseGrades.java:107) 

В CourseGrades ToString() метод вы не выполнили какой-либо нулевой чек.

str = "Lab Score: " + grade[0].getScore() + ", Grade: " + grade[0].getGrade() + "\n" + 
    "Pass/Fail Exam Score: " + grade[1].getScore() + ", Grade: " + grade[1].getGrade() + 
    "Essay Score: " + grade[2].getScore() + ", Grade: " + grade[2].getGrade() + "\n" + 
    "Final Exam Score: " + grade[3].getScore() + ", Grade: " + grade[3].getGrade(); 

В TestCourseGrades вы установили только экземпляр LabValue, но не другие. Значения для значений класса [1], grade [2], grade [3] будут равны нулю.

Вот почему вы получаете исключения нулевого указателя

Измените метод ToString(), как показано ниже

public String toString() { 
    String str=""; // FOR LOOP??? 

    if(grade[0]!=null) 
    str += "Lab Score: " + grade[0].getScore() + ", Grade: " + grade[0].getGrade() + "\n"; 
    if(grade[1]!=null) 
    str += "Pass/Fail Exam Score: " + grade[1].getScore() + ", Grade: " + grade[1].getGrade() ; 
    if(grade[2]!=null) 
    str += "Essay Score: " + grade[2].getScore() + ", Grade: " + grade[2].getGrade() + "\n" ; 
    if(grade[3]!=null) 
    str += "Final Exam Score: " + grade[3].getScore() + ", Grade: " + grade[3].getGrade(); 

    return str; 
} 
Смежные вопросы