Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 即使在初始化数组时也出现空指针异常_Java - Fatal编程技术网

Java 即使在初始化数组时也出现空指针异常

Java 即使在初始化数组时也出现空指针异常,java,Java,我正在编写一个程序,输入需要安排的各种讲座请求。 讲座有开始时间和结束时间。 要求安排最大数量的讲座。(算法是按结束时间安排课程,并选择不重叠的课程——贪婪策略)。 为了做到这一点,我有一个“讲座”班和一个“讲座安排”班。 我创建了一个输入数组(讲座)。然后我请求用户输入各种请求。 然而,我得到了错误“线程中的异常”main“java.lang.NullPointerException”。 请帮忙。 非常感谢。 附言: 我在“input[I].time[0]=in.nextInt();”行中有错

我正在编写一个程序,输入需要安排的各种讲座请求。 讲座有开始时间和结束时间。 要求安排最大数量的讲座。(算法是按结束时间安排课程,并选择不重叠的课程——贪婪策略)。 为了做到这一点,我有一个“讲座”班和一个“讲座安排”班。 我创建了一个输入数组(讲座)。然后我请求用户输入各种请求。 然而,我得到了错误“线程中的异常”main“java.lang.NullPointerException”。 请帮忙。 非常感谢。 附言: 我在“input[I].time[0]=in.nextInt();”行中有错误 确切的错误是: 线程“main”java.lang.NullPointerException中出现异常 在讲师日程安排.讲师日程安排.main(讲师日程安排.java:116)

//讲课。。时间[0]是讲座的开始时间,时间[1]是讲座的结束时间

 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();