确定图形顶点的函数

时间:2013-02-25 15:26:18

标签: java graph nullpointerexception

我遇到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;
    }

2 个答案:

答案 0 :(得分:6)

为什么answer = null;

由于此语句方法,getVertexByNumber将始终返回null

答案 1 :(得分: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;
}