2013-02-25 2 views
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; 
    } 
+0

어디에서 예외가 발생합니까? – iamnotmaynard

답변

6

answer = null;입니까?

은 항상 null을 반환합니다.

+0

마찬가지로이 좋은 대답에 덧붙여 OP는 'Vertex answer;'를 초기화하지 않아도 이익을 얻을 수 있습니다. Vertex가 발견되면 대답은 값을 가지며, 그렇지 않으면 null입니다. 그것은 null로 설정하려고 시도한 것입니다. – NominSim

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; 
} 
관련 문제