【问题标题】:Null Pointer Exception Error .Please help me空指针异常错误。请帮助我
【发布时间】:2014-03-11 15:35:43
【问题描述】:

我有 2 个类:Persoana(person) 和 PersoanaList(用于存储所有 Persoana 对象)

Persoana.java:

public class Persoana {
    private String nume;
    private String prenume;
    private ContCurent contCurent;
    private ContDepozit contDepozit;

    public Persoana(String n,String pr,ContCurent cC){//are doar cont curent
        nume=n;
        prenume =pr;
        contCurent=cC;
    }
    public Persoana(String n,String pr,ContDepozit cD){//are doar cont depozit
        nume=n;
        prenume =pr;
        contDepozit=cD;
    }
    public Persoana(String n,String pr,ContCurent cC,ContDepozit cD){//are atat cont curent cat si depozit
        nume=n;
        prenume =pr;
        contCurent =cC;
        contDepozit=cD;
    }
    public String getNume(){
        return nume;
    }
    public String getPrenume(){
        return prenume;
    }
    public void afisare(){
        System.out.println(nume);
        System.out.println(prenume);
        System.out.println(contDepozit.numarCard);
        System.out.println(contDepozit.pin);
        System.out.println(contDepozit.sold);
        contDepozit.getDataScadenta();

    }
    public int getPin(){
        return contCurent.pin;

    }

PersoanaList 文件:

公共类 PersoanaList {

 Persoana[] perslist = new Persoana[20];
int i=1;
public void adauga(Persoana a)
{

    perslist[i]=a;
    i++;


}
public void afisare(){
    for(int j=1;j<=perslist.length;j++)
    {
        perslist[j].afisare();
    }
}
public boolean cautare(String a,int b){
    boolean check=true;
    for(int j=1;j<=perslist.length;j++)
    {

        if(perslist[j].getNume().equals(a) && perslist[j].getPin()==b)
        check= true;
        else
            check= false;

    }
    return check;




}
public int marime(){
    return perslist.length;
}

}

每个 Persoana 都有一个名字和别针。 方法“cautare”将在数组中搜索,如果存在pin和name。如果存在则返回true(有点像登录);

我有这个错误:java.lang.NullPointerException 谁能帮我?请..

Ps : perslist[j].getNume() - 不是 null ,也不是 ..getPin()

【问题讨论】:

  • 您在哪一行得到异常?
  • 请发布您收到的整个错误消息
  • 堆栈跟踪也会很好。

标签: java exception null public lang


【解决方案1】:

您在 PersoanaList 类的一个循环中得到 NullPointerException (NPE)。例如:

public boolean cautare(String a,int b){
    boolean check=true;
    for(int j=1;j<=perslist.length;j++)
{

    if(perslist[j].getNume().equals(a) && perslist[j].getPin()==b)

因为除非你完全填满了你的perslist 变量,否则你会遇到一个为空的数组项,在调用.getName() 时给你一个NPE。

不过,在您修复该问题后,您可能会遇到 ArrayIndexOutOfBoundsException,因为您使用 1 到 n 作为数组索引。数组从 0 开始到 n-1。因此,对于 20 个数组项,您可以将它们引用为 0 到 19。

【讨论】:

  • PersonList 由 main 填充。 ContDepozit cD = new ContDepozit("Ro34190442y74y43", 1234, 400, d1); ContCurent cC = new ContCurent("Ro34190442y74y43",1234,400,350); Persoana pers1 = new Persoana("Maxim","Alexandru", cC,cD); PersoanaList pl = new PersoanaList(); pl.adauga(pers1); pl.adauga(pers1); if(pl.cautare("Maxim", 1234)==true) System.out.println("find");否则 System.out.println("error");
  • for(int j=0;j 我添加这个 System.out.println(perslist[j] .getNume()); 查看 perslist.getnume 是否为空。并且发生了一些奇怪的事情。 4 名称打印在控制台中,但打印后我仍然收到此错误: * Main.main(Main.java:24) 的 PersoanaList.cautare(PersoanaList.java:24) 的线程“main”java.lang.NullPointerException 中的异常*
猜你喜欢
  • 2011-09-30
  • 1970-01-01
  • 2014-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多