空指针异常错误请帮助我

wdebmtf2  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(291)

我有两个类: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文件:
公共阶层人格主义者{

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;
}

}
每个人都有名字和别针。方法“cautare”将在数组中搜索,如果存在pin和name,则返回true(类似于login);
我有一个错误:java.lang.nullpointerexception有人能帮我吗?拜托。。
ps:perslist[j].getnume()-也不是null..getpin()

5anewei6

5anewei61#

您将在中的一个循环中获得nullpointerexception(npe) PersoanaList 班级。例如:

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 变量,则会命中一个为null的数组项,当 .getName() 被称为。
不过,在修复该问题之后,可能会遇到arrayindexoutofboundsexception,因为数组索引使用1到n。数组从0开始,转到n-1。因此,对于20个数组项,可以将它们引用为0到19。

相关问题