Java 即使在初始化数组时也出现空指针异常
我正在编写一个程序,输入需要安排的各种讲座请求。 讲座有开始时间和结束时间。 要求安排最大数量的讲座。(算法是按结束时间安排课程,并选择不重叠的课程——贪婪策略)。 为了做到这一点,我有一个“讲座”班和一个“讲座安排”班。 我创建了一个输入数组(讲座)。然后我请求用户输入各种请求。 然而,我得到了错误“线程中的异常”main“java.lang.NullPointerException”。 请帮忙。 非常感谢。 附言: 我在“input[I].time[0]=in.nextInt();”行中有错误 确切的错误是: 线程“main”java.lang.NullPointerException中出现异常 在讲师日程安排.讲师日程安排.main(讲师日程安排.java:116) //讲课。。时间[0]是讲座的开始时间,时间[1]是讲座的结束时间Java 即使在初始化数组时也出现空指针异常,java,Java,我正在编写一个程序,输入需要安排的各种讲座请求。 讲座有开始时间和结束时间。 要求安排最大数量的讲座。(算法是按结束时间安排课程,并选择不重叠的课程——贪婪策略)。 为了做到这一点,我有一个“讲座”班和一个“讲座安排”班。 我创建了一个输入数组(讲座)。然后我请求用户输入各种请求。 然而,我得到了错误“线程中的异常”main“java.lang.NullPointerException”。 请帮忙。 非常感谢。 附言: 我在“input[I].time[0]=in.nextInt();”行中有错
class lecture{
int[] time= new int[2];
lecture (int a, int b){
time[0]=a;
time[1]=b;
}
}
//课程安排的一部分
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Input number of lectures ");
int arraylength = in.nextInt();
lecture [] input= new lecture[arraylength] ;
for (int i=0; i<arraylength; i++){
System.out.println("Input start time of lecture "+ i);
input[i].time[0] = in.nextInt();
System.out.println("Input end time of lecture "+ i);
input[i].time[1] = in.nextInt();
System.out.println();
}
input=SortByStartTime(input);
input=CreateSchedule(input);
PrintSchedule(input);
}
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
System.out.println(“输入讲座次数”);
int arraylength=in.nextInt();
讲座[]输入=新讲座[排列长度];
对于(int i=0;i在分配对象数组时,实际上您只分配引用,而不是对象本身(teaching[]input=new teaching[arraylelength];
不创建teaching
类型的对象,这与C++等值类型语言不同)。因此,当您访问:
input[i].time[0] = in.nextInt();
如果不首先为输入[i]
创建讲座
的实例,您将获得一个NPE
要解决此问题,您需要在尝试访问讲座
的每个对象上使用new
运算符(假设空构造函数可见并已定义):
另外,java中有一种惯例,即键入名称(例如,讲座
,这是一种类型)-以大写字母开头。因此,我建议将讲座
重命名为讲座,这是否意味着在for循环中我将有ti初始化输入[I]首先,然后获取输入?@user1683651:是,或者作为预处理,在不同的for循环中(在访问数据的for循环之前)
input[i] = new lecture();