数组nullpointerException错误

时间:2014-06-24 05:07:39

标签: java arrays nullpointerexception

这是我的部分代码:

`private Instrumento[] repInst;
 public RepositorioInstrumentos(){
    Instrumento[] repInst = new Instrumento[20];
 }
 private int getPos(int id){
        int pos= -1;
        for(int i=0; i<tam; i++){
            if (repInst[i]!=null&&repInst[i].getId()==id){
                pos=i;
                i=tam;
            }
        }
        return pos;
    }`

我一直在这一行得到一个零点Poiter异常:

 `if (repInst[i]!=null&&repInst[i].getId()==id){`

repInst的所有位置都为空。我认为把那个“if”他跳过它并返回pos = -1。

为什么不工作?

3 个答案:

答案 0 :(得分:4)

repInst是构造函数中的局部变量

private Instrumento[] repInst;
public RepositorioInstrumentos(){
 repInst = new Instrumento[20];
 }
private int getPos(int id){
    int pos= -1;
    for(int i=0; i<tam; i++){
        if (repInst[i]!=null&&repInst[i].getId()==id){
            pos=i;
            i=tam;
        }
    }
    return pos;
}

答案 1 :(得分:0)

初始化构造函数中的repInst然后访问其方法beacuse如果访问其方法而不初始化它将获得NullPointerException并且tam变量的值可能是其值比数组lenth更大,然后它也会抛出ArrayIndexOutOfBoundsException

private Instrumento[] repInst;
 public RepositorioInstrumentos(){
   repInst = new Instrumento[20];
 }
 private int getPos(int id){
        int pos= -1;
        int tam=20;
//tam variable value should b less then arrays length
        for(int i=0; i<tam; i++){
            if (repInst[i]!=null&&repInst[i].getId()==id){
                pos=i;
                i=tam;
            }
        }
        return pos;
}`

答案 2 :(得分:0)

做一个改变。在Constructor中初始化此数组。

Instrumento[] repInst = new Instrumento[20];

或用Object的对象初始化它。