当前位置:编程学习 > JAVA >>

使用ArrayList出现NullPointerException...帮忙

--------------------编程问答-------------------- Test类在init方法 时候admin这个变量没有被实例化

import java.io.*;
import java.util.*;

public class Test
{
    Admin admin; //实例化管理员类-----这样只是声明,根本没有实例化

    public static void main(String[] args) throws Exception
    {
        Scanner scan = new Scanner(System.in);
        Test test = new Test();
        test.initAdmin();
    }
    public void initAdmin()
    {
        admin=new Admin();//这里实例化
        admin.adList.add(new Admin("Rin","admin","admin"));
    }
}


public class Admin extends User
{
    ArrayList adList = new ArrayList();
    //ArrayList adList = null;

    public Admin(){}
    
    public Admin(String adID, String adPwd, String uType)
    {
        //adList = new ArrayList();
        this.userID = adID;
        this.userPassword = adPwd;
        this.userType = uType;
    }
}
--------------------编程问答--------------------


import java.util.ArrayList;
import java.util.Scanner;

public class Test {
    Admin admin; //实例化管理员类

    public static void main(String[] args) throws ClassNotFoundException {//把NotFoundException 改为 ClassNotFoundException
Scanner scan = new Scanner(System.in);
Test test = new Test();
test.initAdmin();
    }

    public void initAdmin() {
admin.adList.add(new Admin("Rin", "admin", "admin"));
    }
}

//----------------------------------
//用来创建存储Admin信息的Admin类
class Admin extends User {
   public static  ArrayList adList = new ArrayList();//前面添加一个public static

    //ArrayList adList = null;
    public Admin(String adID, String adPwd, String uType) {
//adList = new ArrayList();
this.userID = adID;
this.userPassword = adPwd;
this.userType = uType;
    }
}

//------------------------------------------
//Admin继承的User类
abstract class User {
    public String userID;
    public String userPassword;
    public String userType;

}


--------------------编程问答-------------------- 感谢楼上两位大大,不过一楼的方法用过后还是会报错:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - constructor Admin in class test.Admin cannot be applied to given types;
  required: java.lang.String,java.lang.String,java.lang.String
  found: no arguments
  reason: actual and formal argument lists differ in length

然后,为什么像二楼那样加一个public static就可以了呢...
然后,加了这个声明后,如果以后再程序中想往adList中添加元素是不是可以呢? --------------------编程问答-------------------- 你也太弱了吧,你就不知道import Admin这个类?

CSDN上完全不懂Java的人太多,实在无语,你们这个水平只能给你们“喂食”稍微遇到一点问题就不懂自己解决,给你贴出来你只需要复制粘贴的代码

别说我代码有问题,是你不自己import,这次直接使用default的class写在一个Java里面


import java.io.*;
import java.util.*;

public class Test11
{
    Admin admin; //实例化管理员类

    public static void main(String[] args) throws Exception
    {
        Scanner scan = new Scanner(System.in);
        Test11 test = new Test11();
        test.initAdmin();
       

    }
    public void initAdmin()
    {
        admin=new Admin();
        admin.adList.add(new Admin("Rin","admin","admin"));
    }
}

class Admin extends User
{
    ArrayList adList = new ArrayList();
    //ArrayList adList = null;

    public Admin(){}

    public Admin(String adID, String adPwd, String uType)
    {
        //adList = new ArrayList();
        this.userID = adID;
        this.userPassword = adPwd;
        this.userType = uType;
    }
}


abstract class User
{
    public String userID;
    public String userPassword;
    public String userType;

}


引用 3 楼 tennosu 的回复:
感谢楼上两位大大,不过一楼的方法用过后还是会报错:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - constructor Admin in class test.Admin cannot be applied to given types;
  required: java.l……
--------------------编程问答-------------------- 四楼给你很详细的答案 ,我看你给我散多少分 --------------------编程问答-------------------- 一.如果按你的源程序来说, Admin admin; //实例化管理员类.这句代码没有创建Admin类的对象,它的ArrayList类成员变量list自然也没有得到实例化,所以在add元素的时候会报空指针错误.

二.1楼的方法中是没有错的,在调用initAdmin()方法时进行了Admin对象的实例化.整个代码可以运行.
只不过他贴出来的代码中少了User类.可能是这个原因吧.

三.2楼的方法也很好,将ArrayList类成员变量list设为静态的,这样不需要Admin对象实例化,这个list也存在了(静态成员变量在使用这个类的时候就被创建了).所以后面的add方法得以执行.
不过admin.adlist最好改成Admin.adlist.因为静态成员变量一般由类名调用,而不是由对象调用. --------------------编程问答-------------------- 空指针的问题一般很好找吧。 --------------------编程问答-------------------- Exception in thread "main" java.lang.NullPointerException:一看就知道是没得创建对象的。
 Admin admin 只是创建一个引用 ,没得开辟空间的。 --------------------编程问答-------------------- debug跟下,空指针是比较好找的 --------------------编程问答-------------------- 你是没有定义默认的构造函数吧,因为你显式的定义了有参数的构造函数,而你在初始化Admin的时候是用的默认的构造函数(无参的),所以一样会报错。
引用 3 楼 tennosu 的回复:
感谢楼上两位大大,不过一楼的方法用过后还是会报错:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - constructor Admin in class test.Admin cannot be applied to given types;
  required: java.……
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,