2013-09-06 6 views
3

전제 : 나는 초보자이다.클래스의 인스턴스 변수에 액세스하기 java

저는 학교 시간표를 만드는 자바 프로그램을 개발 중이며 사용자는 몇 개의 수업을 만들어야하는지, 교사와 하루 시간 수를 선택할 수 있습니다. 내 문제는 "중복 된"선생님이 있는지 (즉, 선생님이 같은 시간에 두 개의 다른 수업을 가지고 있는지) 확인해야하는 경우입니다. 내 프로그램에는 Class.java, Day.javaMain.java의 세 클래스가 있으며 그 중 아무 것도 다른 클래스를 확장하지 않으며 추상 또는 인터페이스는 아닙니다. 이

for(int l = 0; l < nClasses.length; l++) { 
    for(int j = 0; j <= l; j++) { 
     for(int i = 0; i < nClasses[j].nDays.length; i++) { 
      for(String s : nClasses[j].nDays[i].profpos.keySet()) { 
       // Check for duplicate teachers 
       if(j != l && nClasses[l].nDays[i].profpos.containsKey(s) && nClasses[j].nDays[i].profhr.get(s) != 0 && nClasses[l].nDays[i].profhr.get(s) != 0 && nClasses[j].nDays[i].profpos.get(s) == nClasses[l].nDays[i].profpos.get(s)) { 
        System.out.println("Duplicate teacher " +s +" in the day " +nClasses[j].days[i] +" at position " +nClasses[j].nDays[i].profpos.get(s) +" in classes " +classes[j] +" and " +classes[l]); 
       } 
      } 
     } 
    } 
} 

당신이 여기에 세 가지 클래스의 전체 코드를 찾을 수 있습니다 : 이것은 나를 괴롭히는되는 코드 당신이 볼 수 있듯이, 그때 얻을 Class()의 배열을 사용하고 https://gist.github.com/anonymous/6462953

Day()의 다른 배열로 이동하여 교사가 중복되는지 확인하려면 profposHashMap으로 끝납니다. 제 질문은 : HashMaps에 액세스하는 더 좋은 방법이 있습니까?

+1

대신 교사에게 수업에 배정하는 동안 알아 내지 못하는 이유가 있습니다. 이 시간에 충돌 여부를 확인할 수 있습니다. –

+2

Class.java는 이미 java.lang 패키지에서 사용할 수 있습니다 .please 다른 이름을 선택하십시오 .... :) –

+2

검토 할 작업 코드로 보이므로 [codereview.se]에 더 적합 할 수 있습니다. – Dukeling

답변

8

구현을 다시 설계해야합니다.

클래스 객체는

  1. 클래스 이름은
  2. 클래스 설명
  3. 수업 시간이
  4. 클래스 기간은

당신은해야 안좋다한다 (코스 또는 무언가에 이름을 바꿉니다) 교사 클래스/객체.

  1. 교사는 교사가 이미있는 경우 교사가 확인, 당신은 교사에 클래스를 할당 할 때 교사는

떨어져 일을 가질 수 클래스를

  • 을 가질 수
  • 이름이 수업. 교사에게 수업을 지명 할 때 교사가 그 시간에 수업을 가지고 있는지도 확인하십시오.

  • +0

    대단히 고마워, 내가 어떻게해야하는지 명확히했다. –

    +0

    @ 지오바니 베르 티. –

    2

    이것은 아마도 조금 길어질 것이므로 나와 함께 감내 할 것이지만 나는 당신이 디자인을 조금 재고 할 필요가 있다고 생각합니다.

    우선 Classclass 이름으로는 좋지 않은 선택입니다. 나중에 혼란스러워 할 수 있습니다. Lecture 또는 다른 것으로 바꿀 수 있습니까?

    둘째, '시간적 유형'클래스를 작성해서는 안됩니다. 필자가 완전히 이해하고있는 절대적으로 손상된 기본 제공 캘린더 클래스를 사용하고 싶지 않다면, 항상 상위 우퍼 시간 라이브러리를 대신 사용할 수 있습니다.

    셋째, 강의에 일시적 구성 요소가 있어야합니다. 모든 강의가 항상 동일한 길이이고 블록으로 구성된 경우 시작 시간과 종료 시간, 시작 시간과 지속 시간, 또는 양자 택일로 고정 된 (묵시적으로) 지속 시간. 당신이 그런 유연성을 필요로하지 않는다면.

    넷째, Instructor 클래스가 필요합니다.이 클래스는 특정 강의 (예 : Lecture)에 대한 참조를 유지하는 곳이며 LectureInstructor에 할당하면 (Lecture 클래스를 디자인하는 방법에 따라 다름)이를 TreeSet에 추가하고 결과를 확인하거나 joda 시간을 사용하여 Interval.overlap이 null이 아닌 값을 반환하는지 확인합니다.

    관련 문제