2013-11-25 2 views
0

기본적으로 필자는 객체를 선언 한 후 필자의 Person 클래스에 다음과 같이 작성된 배열에 추가하고 객체화 할 수있는 메소드가 있습니다. Person 클래스. 어떤 이유에서 이것은 첫 번째 항목에서 작동하지만 나머지는 모두 false를 반환합니다 (항목이 배열에 추가 된 경우 true를 반환하고 항목이 배열에 추가되지 않은 경우 false를 반환 함).메인 클래스에서 생성 된 객체를 다른 클래스의 배열에 추가

Department dept = new Department(4); 
Person john = new Person("John", 35); 
System.out.println(dept.addPerson(john)); 

및 작동하지 않는 클래스 : :

private Person[] people; 
private int count; 
public Department(int count){ 
    people = new Person[count]; 
} 
public boolean addPerson(Person x){ 
    boolean found = false; 

    for(int i = 0; i < people.length; i++){ 
     if (people[i] == null){ 
      people[i] = x; 
      found = true; 
     } 
    } 
    return found; 
} 
+0

게시물의 코드 형식을 지정하는 방법에 대한 도움말 섹션을 읽는 것을 고려하십시오. 당신은 그것을 잘못하고, 읽기가 힘들며, 실제로는 너무 쉬워서, 우리가 그것을 바로 잡으려고 노력하기가 어렵습니다. 코드를 다시 게시하는 것이 좋습니다. –

답변

0

첫 번째 호출 할 경우, 당신은 전체 배열을 작성하고 있습니다. 따라서 색인은 다음 호출시 null이 될 수 없습니다.

public boolean addPerson(Person x){ 
    boolean found = false; 

    for(int i = 0; i < people.length; i++){ // you're filling the array in this loop 
     if (people[i] == null){ 
      people[i] = x; 
      found = true; 
     } 
    } 
    return found; 
} 
0

당신은 당신이 뭔가를 추가 한 후 루프 당신을 깰 필요가 여기 내 주요 방법이다. 당신은 지금 당신이 처음 추가 한 사람으로 당신의 배열을 채 웁니다.

for(int i = 0; i < people.length; i++){ 
    if (people[i] == null){ 
     people[i] = x; 
     found = true; 
    } 
} 

는 방법

for(int i = 0; i < people.length; i++){ 
    if (people[i] == null){ 
     people[i] = x; 
     found = true; 
     break; 
    } 
} 
+0

나는 깨뜨리지 않을 것입니다. –

+0

그래, 아마도 그게 더 나은 선택이 될거야. 방금 퀵 픽스를 추가했습니다. – EpicOkapi

+0

@EpicOkapi 멋진 작품! 내가 한 일에서 무슨 일이 일어 났는지 설명해 주시겠습니까? 나는 주위에 내 머리를 잡으려고 노력하고있어, 고마워! – user3029711

관련 문제