2013-01-16 8 views
0

Binary Search Tree을 실행하려고하는데 내 주 프로그램에서 유형이 Employee 인 개체를 만들려고하는데 문제가되지 않는 것 같지만 내 BST에서 항목을 검색하도록 선택하면, 프로그램이 종료됩니다. 프로그램이 종료되면이진 검색 트리, 검색 방법

System.out.println("Searching the Binary Search Tree"); 
         System.out.println("Enter surname to search for:"); 
         String choice2 = sc.nextLine(); 
         BinaryNode a = temp.search(choice2); 
         Employee newEmp = (Employee) a.obj; 
         if (a == null) 
          { 
           System.out.println("Not Found"); 
          } 
         else 
          { 
           System.out.println(newEmp.getData()); 
          } 
         break; 
        } 

, 그것은 주어진 라인

Employee newEmp = (Employee) a.obj; 

하고 오류를 가리키는이 제발 일어나는 이유 java.lang.NullPointerException: null

는 는

는 사람이 말해 수있다?

+5

'temp.search (choice2);는'null'을 반환하기 때문에? –

+0

검색 방법을 보여 줬는데 괜찮습니까? – user1928374

답변

2

null 객체의 .obj에 액세스 할 수 없습니다. a == null인지 확인한 후 행을 이동해야합니다.

System.out.println("Searching the Binary Search Tree"); 
        System.out.println("Enter surname to search for:"); 
        String choice2 = sc.nextLine(); 
        BinaryNode a = temp.search(choice2); 
        if (a == null) 
         { 
          System.out.println("Not Found"); 
         } 
        else 
         { 
          Employee newEmp = (Employee) a.obj; 
          System.out.println(newEmp.getData()); 
         } 
        break; 
       } 
+0

오,이게 합리적입니다. 이제 다른 문제가 생겼습니다. 프로그램을 실행할 때 프로그램에서 성을 입력하는 부분을 건너 뜁니다. 내 sc.nextLine() 때문에이 문제가 발생할 수 있습니까? 확실하지 않았습니다. – user1928374

0

temp.search (choice2)가 null이 아닌 값을 반환하는지 확인할 수 있습니까? null 참조가있는 캐스트는 이러한 오류를 발생시킵니다.

또한 BinaryNode에 대해 수행중인 캐스트가 실제로 Employee인지 확인하십시오. 당신이 당신의 코드를 재구성 및 조건의 else 부분에 라인 Employee newEmp = (Employee) a.obj;를 추가해야하므로

+0

오류가 발생하는 캐스트가 아니므로 회원 액세스입니다. 'null'을 어떤 객체 타입으로 던지면 잘 동작합니다. – MvG

0

귀하의 search 방법은 null 반환 할 수 있습니다 (하지만이는 NullPointerException이 관련이 없습니다).

+0

오,이게 합리적입니다. 이제 다른 문제가 생겼습니다. 프로그램을 실행할 때 프로그램에서 성을 입력하는 부분을 건너 뜁니다. 내 sc.nextLine() 때문일 수 있습니까? 그것에 대해 확실하지 않았다. – user1928374