0

Java の NullPointerException に問題があります。私の関数は頂点の番号を取得し、頂点を返します (私はすでにそのようなクラスを持っています)。これが私のコードです

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 に答える