android中的linkedlist中的java.lang.nullpointer错误

时间:2017-03-04 05:48:37

标签: java android linked-list null-pointer

我正在尝试使用要求中提供的几个类创建学生注册界面。这样做,我的CourseFactory类中的链表显示了一个空指针。

public class Course {

private String id;
private String title;
private int credit;
private int tuitionPerCredit;

public void setId(String id){
    this.id=id;
}

public String getId(){
    return this.id;
}

public void setTitle(String title){
    this.title=title;
}

public String getTitle(){
    return this.title;
}

public void setCredit(int credit){
    this.credit=credit;
}

public int getCredit(){
    return this.credit;
}

public void setTuitionPerCredit(int tuitionPerCredit){
    this.tuitionPerCredit=tuitionPerCredit;
}

public int getTuitionPerCredit(){
    return tuitionPerCredit;
}

public int getSubTotal(){
    return this.credit*this.tuitionPerCredit;
}
}

和CourseFactory类

import java.util.LinkedList;

import static android.R.attr.id;

public class CourseFactory {

    LinkedList<Course> cList;

public void CourseFactory(){
    Course course = new Course();
    course.setId("CSE327");
    course.setTitle("SOFT ENG");
    course.setCredit(3);
    course.setTuitionPerCredit(1500);
    cList.add(course);

    Course course1 = new Course();
    course1.setId("CSE115");
    course1.setTitle("INTRO C");
    course1.setCredit(3);
    course1.setTuitionPerCredit(1500);
    cList.add(course1);

    Course course2 = new Course();
    course2.setId("CSE215");
    course2.setTitle("INTRO JAVA");
    course2.setCredit(3);
    course2.setTuitionPerCredit(1500);
    cList.add(course2);

    Course course3 = new Course();
    course3.setId("CSE225");
    course3.setTitle("DATA STRUCT");
    course3.setCredit(3);
    course3.setTuitionPerCredit(1500);
    cList.add(course3);

    Course course4 = new Course();
    course4.setId("CSE373");
    course4.setTitle("ALGOR.");
    course4.setCredit(3);
    course4.setTuitionPerCredit(1500);
    cList.add(course4);
}


public Course getCourse(String id){
    int temp = 0;
    for(int i=0;i<cList.size();i++) {
        if (cList.get(i).getId().equals(id)) {
                temp=i;
            break;
            }
        }
    return cList.get(temp);
    }
  }
  

错误在第34行;如果(cList.get(i).getId()。equals(id))

2 个答案:

答案 0 :(得分:3)

您必须初始化LinkedList。否则它将获得空指针异常。

LinkedList<Course> cList=new LinkedList<Course>();

答案 1 :(得分:0)

您需要在使用前初始化cList

LinkedList<Course> cList=new LinkedList<Course>();

或更好,初始化为CourseFactory的构造函数

public void CourseFactory(){

      cList=new LinkedList<Course>();

      Course course = new Course();
      ...
      ...
}
-pource 7或更高版本支持

diamond运算符

LinkedList<Course> cList=new LinkedList<>();