Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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.lang.NullPointerException错误如何修复?_Java - Fatal编程技术网

java.lang.NullPointerException错误如何修复?

java.lang.NullPointerException错误如何修复?,java,Java,有空指针异常的问题,我读了几篇关于这个错误的文章,但仍然不知道问题出在哪里 错误发生在CompatibleActivity[topIndex]=新活动(aNum、bNum、c) 顺便说一下,topIndex=0 有人能突出我的问题吗 这是我的课 public class Schedulingtest { public static void main (String[] args) throws IOException { Scanner fileScan; fileS

有空指针异常的问题,我读了几篇关于这个错误的文章,但仍然不知道问题出在哪里

错误发生在
CompatibleActivity[topIndex]=新活动(aNum、bNum、c)

顺便说一下,topIndex=0

有人能突出我的问题吗

这是我的课

public class Schedulingtest {


public static void main (String[] args) throws IOException
{   

   Scanner fileScan;

   fileScan=new Scanner(new File("data.txt"));

    Schedule compatibility = new Schedule(); 


    while(fileScan.hasNext())
    {String url=fileScan.nextLine();
    compatibility.addActivity(url);


    }

}


public class Schedule{


import java.util.Scanner;
import java.util.Arrays;

public class Schedule {
Activity[] CompatibleActivity;
int totalTime=0,topIndex=0;
Scanner urlScan;

public Schedule(){
Activity[] CompatibleActivity=new Activity[30];

}


public int getTotalTime()
{return totalTime;
}     

public void addActivity(String entry){

    urlScan=new Scanner(entry);
    urlScan.useDelimiter(" ");

     String c=null;
    int aNum = 0,bNum=0;

    while(urlScan.hasNext())
    {String a=urlScan.next();
     String b=urlScan.next();
     c=urlScan.next();

     aNum=Integer.parseInt(a);
     bNum=Integer.parseInt(b); 

             }    
    CompatibleActivity[topIndex]=new Activity(aNum,bNum,c);
    topIndex++;

    System.out.println("Activity added:  start "+aNum+ " stop "+bNum+" "+c ); 
}    
}

活动课

public class Activity {

private int start,stop,duration;
private String name;

public Activity(int Start,int Stop,String Name)
{
start=Start;
stop=Stop;
name=Name;
duration=Stop-Start;   
}    

public String getName()
{return name;
}        

public int getStart()
{return start;
}

public int getStop()
{return stop;
}        

public int getDuration()
{return duration;
}    

public boolean compatible(int Start1,int Stop1,int toMatchsideStart,int toMatchsideStop)
{
   int Start=Start1;
   int Stop=Stop1;
   int toMatchStart=toMatchsideStart;
   int toMatchStop=toMatchsideStop;

if(toMatchStop<=Start)
{return true;
}
if(toMatchsideStart>=Stop)
{return true;
}
else
{return false;}    
}        


public String toString()
{return( name+"<"+start+","+stop+">"); }        
}
公共课堂活动{
私有整数开始、停止、持续时间;
私有字符串名称;
公共活动(整数开始、整数停止、字符串名称)
{
开始=开始;
停止=停止;
名称=名称;
持续时间=停止-启动;
}    
公共字符串getName()
{返回名称;
}        
public int getStart()
{返回开始;
}
公共int getStop()
{返回站;
}        
public int getDuration()
{返回持续时间;
}    
公共布尔兼容(int-Start1、int-Stop1、int-toMatchsideStart、int-toMatchsideStop)
{
int Start=Start1;
int Stop=Stop1;
int-toMatchStart=toMatchsideStart;
int-toMatchStop=toMatchsideStop;
如果(toMatchStop=停止)
{返回true;
}
其他的
{返回false;}
}        
公共字符串toString()
{return(name+“”);}
}

如果NullPointerException肯定位于该行,那么它只能由CompatibleActivity为null引起。您需要在代码中找到声明该数组对象的位置,并确保它也被实例化,例如

Activity[] CompatibleActivity = new Activity[size];

如果NullPointerException肯定在该行上,那么它只能由CompatibleActivity为null引起。您需要在代码中找到声明该数组对象的位置,并确保它也被实例化,例如

Activity[] CompatibleActivity = new Activity[size];

在访问数组的某个单元格之前,请检查是否已初始化该数组。你需要一个像这样的表达

CompatibilityActivity = new Activity[1];  // or any other positve number if size is bigger

在访问数组的某个单元格之前,请检查是否已初始化该数组。你需要一个像这样的表达

CompatibilityActivity = new Activity[1];  // or any other positve number if size is bigger

您很可能在类中声明了
CompatibleActivity

private Activity[] CompatibleActivity;
它声明了一个引用,并默认将其初始化为
null
。您需要为其分配一个包含足够元素的真实数组(例如,在构造函数中):


您很可能在类中声明了
CompatibleActivity

private Activity[] CompatibleActivity;
它声明了一个引用,并默认将其初始化为
null
。您需要为其分配一个包含足够元素的真实数组(例如,在构造函数中):



您在何处声明
CompatibleActivity
以及在何处初始化此数组(使其不为null)?请发布引发的异常的完整堆栈跟踪。您显示的是不感兴趣的代码,而不是唯一重要的代码:声明和初始化
CompatibleActivity
。很可能您没有正确初始化它。您在哪里声明
CompatibleActivity
,在哪里初始化此数组(使其不为null)?请发布引发的异常的完整堆栈跟踪。您显示的是不感兴趣的代码,而不是唯一重要的代码:声明和初始化
CompatibleActivity
。很可能是您没有正确初始化它。代码的另一个问题是您过早地终止了
块,因此只有在扫描完最后一个元素后才能填写
兼容活动,不是针对每个扫描的活动。它是真的,我在类的构造函数中添加了兼容性,我更改并将行代码添加到最外层的Schedule全局类中,它就可以工作了。我不明白为什么?你的代码有一个问题就是格式不好。如果您对所有的块都进行了相应的格式化,您就会明白为什么会这样做(除非您不熟悉Java语言。在这种情况下,我建议您好好阅读一下这个主题。请参阅以获取参考)。好的。我会读的。Thx很多。代码的另一个问题是,您过早地终止了
块,因此只有在扫描完最后一个元素后才能填写
兼容活动,不是针对每个扫描的活动。它是真的,我在类的构造函数中添加了兼容性,我更改并将行代码添加到最外层的Schedule全局类中,它就可以工作了。我不明白为什么?你的代码有一个问题就是格式不好。如果您对所有的块都进行了相应的格式化,您就会明白为什么会这样做(除非您不熟悉Java语言。在这种情况下,我建议您好好阅读一下这个主题。请参阅以获取参考)。好的。我会读的。Thx很多。我确实用30个空数组槽进行了初始化,所以我读取的文件中的项目将被输入到该槽中。然后,请在使用该数组时仔细检查该数组是否确实已初始化。只需在引起问题的行前面添加一个
System.out.println(CompatibilityActivity.length)
。(我猜,NPE然后移动到新行)我确实用30个空数组槽进行了初始化,所以我读取的文件中的项目将被输入到该槽中。然后,请在使用它时仔细检查数组是否真的初始化了。只需在引起问题的行前面添加一个
System.out.println(CompatibilityActivity.length)
。(我猜,NPE随后会转移到新的生产线)