为了账号安全,请及时绑定邮箱和手机立即绑定

为什么编译出错啊?这是什么错误啊?

package gg;


public class Course {

public String id;

public String name;

public Course(String id,String name)

{

this.id=id;

this.name=name;

}


}

package gg;


import java.util.HashSet;

import java.util.Set;


public class Student {

public String id;

public String name;

public Set courses;

public void Student(String id,String name)

{

this.id=id;

this.name=name;

this.courses=new HashSet();

}


}


package gg;


import java.util.ArrayList;

import java.util.List;


public class ListTest {

public List coursestoselect;

public void Listest()

{

this.coursestoselect=new ArrayList();

}

public void testAdd()

{

Course c1=new Course("1", "数学");

coursestoselect.add(c1);

Course temp=(Course)coursestoselect.get(0);

System.out.println("添加课程:"+temp.id+","+temp.name);

}

public static void main(String[] args) {

ListTest lt=new ListTest();

lt.testAdd();

}


}

为什么编译出错啊?

Exception in thread "main" java.lang.NullPointerException

at gg.ListTest.testAdd(ListTest.java:16)

at gg.ListTest.main(ListTest.java:24)

这是什么错误啊?

正在回答

4 回答

原因是你没有实例化List对象coursestoselect!!!你把实例化放入方法ListTest()里面,而在main方法中你没有调用它(ListTest()方法)

1 回复 有任何疑惑可以回复我~
#1

辜谷谷 提问者

谢了,
2017-02-28 回复 有任何疑惑可以回复我~

public void Listest(){

this.coursestoselect=new ArrayList();

}

这句错了,应改为:

public ListTest(){

this.coursestoselect=new ArrayList():

}

0 回复 有任何疑惑可以回复我~
#1

Hiro丶alex

正解,构造类不需要 void
2017-03-15 回复 有任何疑惑可以回复我~

public class ListTest {

public List coursestoselect;这句错了,由于是不同类型的所以要进行强制转换

改变后public List<Course>coursesToSelect;

在下面的也是如此this.coursestoselect=new ArrayList();改变后this.coursestoselect=new ArrayList<Course>();


0 回复 有任何疑惑可以回复我~
#1

Hiro丶alex

你就是在扯淡...这句没问题!
2017-03-15 回复 有任何疑惑可以回复我~

你的public ListTest()构造函数多了个void,将void去掉就可以了

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409777    人
  • 解答问题       4339    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

为什么编译出错啊?这是什么错误啊?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信