问题描述:
这是在写java代码新建对象数组时所犯的错误,发现这样取得的数据会出现空指针错误 java.lang.NullPointerException
public static void main(String[] args) {
System.out.println("请依次输入页表中的信息:页号,标志,主存块号,在磁盘上的位置");
page a[]=new page[7];
int i=0;
Scanner scan=new Scanner(System.in);
while(scan.hasNextInt())
{
//scan=new Scanner(System.in);
a[i].pagenumber=scan.nextInt();
//scan=new Scanner(System.in);
a[i].sign=scan.nextInt();
//scan=new Scanner(System.in);
a[i].blocknumber=scan.nextInt();
//scan=new Scanner(System.in);
a[i].diskloc=scan.nextDouble();
i++;
}
for(i=0;i<7;i++)
{
System.out.println(a[i]);
}
...
原因分析:
a[i]还没有被初始化
解决方案:
page a[]=new page[7];
int i=0;
System.out.println("请输入作业的页数");
Scanner scan=new Scanner(System.in);
int num=scan.nextInt();
System.out.println("请依次输入页表中的信息:页号,标志,主存块号,在磁盘上的位置");
for(i=0;i<num;i++)
{
a[i] = new page();
a[i].pagenumber=scan.nextInt();
a[i].sign=scan.nextInt();
if(a[i].sign==1)
{
a[i].blocknumber=scan.nextInt();
}
a[i].diskloc=scan.nextInt();
}
for(i=0;i<7;i++)
{
System.out.println(a[i]);
}
...