2012-08-31 5 views
0

현재 프로그램 내에 선행 조건이 존재하는지 여부에 따라 수업을 추가해야하는 여러 클래스 지정에서 일하고 있습니다. 해시 맵을 사용하여 프로그램 클래스 내에 내 코스를 저장하고 있습니다. (내가 편리하게 될 것이라고 생각했다.) 그러나, 나는이 preReq가 존재한다는 것을 확신하는데 약간의 문제가있다. 여기에 현재 때문에 기본적으로 확인 문자열 배열에 hashmap 키를 사용하려면 어떻게해야합니까?

public boolean checkForCourseFeasiblity(AbstractCourse c) throws ProgramException 
{ 


    AbstractCourse[] tempArray = new AbstractCourse[0]; 


    tempArray= courses.keySet().toArray(tempArray); 


    String[] preReqsArray = new String[1]; 
    preReqsArray = c.getPreReqs(); 
    //gets all course values and stores them in tempArray 


    for(int i = 0; i < preReqsArray.length; i++) 
    { 

     if(courses.containsKey(preReqsArray[i])) 
     { 
      continue; 
     } 
     else if (!courses.containsKey(preReqsArray[i])) 
     { 
      throw new ProgramException("preReqs do not exist"); //? 

     } 


    } 
    return true; 
} 

을 가고있어, tempArray이 과정의 해시 맵 내부의 모든 키 세트를 저장하는 몇 가지 코드 필자 내가 (문자열의 배열입니다)에있는 PreReqs으로 그들 모두를 비교해야합니다. preReqs가 키 집합 내에 있으면 코스를 추가하지 않으면 코스를 추가하십시오. 코스가 예외를 통해 예외를 추가하면 true를 반환합니다. 내 키 집합은 Strings입니다. 키 집합 값은 "Programming1"일 수 있고 코스에 필요한 필수 항목은 "프로그래밍 1"일 수 있습니다. 이 경우에는 추가하여 전제 조건 코스가 키 집합에 있으므로 코스를 추가하십시오. 나는 c.getPreReqs (참고 : getPreReqs는 반환 유형 String [])가있는 getter 인 mypreReqsArray를 초기화 할 때 내 오류가 있다고 생각합니다. 누군가 내 딜레마로 나를 도울 수 있다면 정말 좋을 것입니다. 가능한 한 많이 제공하려고했는데 지난 3 시간 동안 서클에서 돌아 다니는 느낌이 들었습니다. ( - 고마워요.

+0

'당신이 무엇을 tempArray' 의 모든 과정 값과 저장합니다 //입니다 도착 tempArray를 사용하면 실제로 선언 한 것처럼 보이며 실제로 아무 것도하지 않는 것 같습니다. –

+0

지도와 배열을 초기화하면 추적하고 결과를 볼 수 있습니다. if (courses.containsKey (preReqsArray [i])))'그리고이 줄 괜찮 으면 버그를 추적 할 수있는 몇 가지 테스트 데이터를 초기화하십시오. – Heidarzadeh

답변

0

tempArray가 필요하지 않습니다. "for each "루프가 너무 많은 친절을 보인다. 당신이 예외를 throw 할 경우에 나는이 방법을 호출하는 장소에서 그 논리를 넣어 것입니다.

public boolean checkForCourseFeasiblity(AbstractCourse c) 
{ 

    for(String each : c.getPreReqs()) 
    { 
     if(! courses.containsKey(each)) 
     { 
      return false; 
     } 
    } 

    return true; 
} 
+0

안녕하세요. 이 completelly 이해하지만 여전히 null 포인터 오류가 그래서 내 c.getPreReqs() 함께 할 수있는 생각하고있다. get 메소드가 반환 형식 인 경우에도 문자열이라고 생각할 수 있습니다. String [] – user1638114

+0

이 메소드에 전달한'AbstractCourse c '가 null이거나'courses'가 null 인 경우 null 포인터 예외가 throw 될 수 있습니다. –

관련 문제