0

我遇到了 java 的 NullPointerException 的问题。我的函数获取 Vertex 的编号并返回一个 Vertex(我已经有这样的类)。这是我的代码

public class Graph {
private Set<Vertex> vertices;

public Vertex getVertexByNumber(int number) {
        Vertex answer = new Vertex(number);
        for( Vertex v : vertices ) {
            if(v.getNumber() == number) {
                answer = v;
                break;
            }
        }
        answer = null;

        return answer;
    }
4

2 回答 2

6

为什么answer = null;

因为这个声明方法getVertexByNumber总是会返回null

于 2013-02-25T15:30:01.943 回答
1

我真的不明白你想做什么。但是如果你想让你的函数在没有number值的顶点的情况下创建一个新的顶点,你可以这样写:

public Vertex getVertexByNumber(int number) {
    Vertex answer;

    for (Vertex v : vertices) {
        if (v.getNumber() == number) {
            answer = v;
            break;
        }
    }

    return answer == null ? new Vertex(number) : answer;
}

你也可以写

public Vertex getVertexByNumber(int number) {

    for (Vertex v : vertices) {
        if (v.getNumber() == number) {
            return v;
        }
    }

    return new Vertex(number);
}

否则,不需要给 初始值answer,你只需要声明它:

public Vertex getVertexByNumber(int number) {
    Vertex answer;

    for (Vertex v : vertices) {
        if (v.getNumber() == number) {
            answer = v;
            break;
        }
    }

    return answer;
}

或者

public Vertex getVertexByNumber(int number) {

    for (Vertex v : vertices) {
        if (v.getNumber() == number) {
            return v;
        }
    }

    return null;
}
于 2013-02-25T15:35:13.993 回答