2012-10-27 8 views
0

다른 클래스의 배열 목록에있는 항목을 나열하려고합니다. 주요 프로그램arraylist의 각 항목 인쇄하기

아이템 - - 모든 항목을 저장하는 디렉터리 개체 - 개별 전화 번호부 항목

디렉토리를 생성하는 클래스

나는 총

에게 3 개 종류가있다.

는 난 할 노력하고있어

말해 .... 목록 모든 "디렉토리"에서 만든 배열 목록에서 항목과 같이 그 일을 메신저입니다

if (Directory.entries.size>0) 
{ 
    for (int i=0; i<Directory.entries.size(); i++) // Check size of array 
    { 
      Directory.entries.get(i).showRecord(); 
    } 
} 

DIRECTORY

public void printItem()  
{ 
    //I HAVE NO IDEA WHAT GOES HERE 
} 

ENTRY

public class Entry 
{ 
String name; 
String telNo; 
public Entry(String aName, String aTelNo) 
{ 
    setNumber(aTelNo); 
    setName(aName); 
} 
// Add methods here 
private void setNumber(String aTelNo) 
{ 
    telNo = aTelNo; 
} 

public String getNumber() 
{ 
    return telNo; 
} 

private void setName(String aName) 
{ 
    name = aName; 
} 

public String getName() 
{ 
    return name; 
} 

public String toString() 
{ 
    return name + "." + telNo; 
} 


} 

그러나 나는 그 안에있는 개별 항목을 인쇄 할 수 있도록 printItem() 메서드에서 필요한 것 중 가장 안 좋은 것을 얻었습니다.

누군가 올바른 방향으로 나를 가리킬 수 있습니까? 이것은 여러 클래스에 걸쳐 배열 목록을 실제로 사용한 적이 처음이며 매우 혼란 스럽습니다.

+0

어디에서 printItem을 호출합니까? 그리고 그곳에 무엇을 인쇄하고 싶습니까? –

+2

당신은 결코 printItem을 호출하지 않으므로 원하는 것을 넣으십시오. 고양이의 ASCII 아트 그림을 넣어서 할 수있는 모든 이익을 얻으십시오. –

+0

그러나 Entry에서 호출중인 showRecord 메소드를 구현해야합니다. –

답변

1

Entry 클래스에서 toString을 재정의 했으므로 목록을 반복하여 각 항목을 인쇄하면됩니다. Entry 클래스의 toString을 자동으로 호출하고 반환 된 값을 인쇄합니다. -

print 메서드에이 코드를 넣으십시오.이 코드는 Directory 클래스입니다.

public static void print() { 
    for (Entry entry: Directory.entries) { 
     System.out.println(entry); 
    } 
} 

entriesDirectory 수업 시간에 당신이 가지고있는 static 목록입니다.

그리고 당신의 Tell 클래스

, 당신의 print 메소드를 호출 : -

Directory.print(); 
+0

Perfect, thankyou ... Directory.entries의 항목 수가 Tell 메서드의 0보다 큰 경우 계산할 수 있습니다. if (Directory.entries> 0) 시도했습니다. –

+0

Do'Directory.entries.size()> 0' –

0

을 지금 당신이 printItem()에 대한 호출이없는; .showRecord()에 대한 전화가 printItem()을 대체하려고하거나 동일한 일을 수행하려고하기 때문에 제거하려고한다고 가정합니다.

당신이 .showRecord()를 제거하고 대신 단지 printItem()를 사용하고, 데이터 멤버와 수집의 몇 가지 유형을 사용하고 있는지가 Directory 클래스 내부 entries라는 것을 가정 :

public void printItem() { 
    for (Entry entry : this.entries) { 
     System.out.println(entry); 
    } 
} 

은 이미 오버라이드 된 이후 당신이 필요로하는 모든 것입니다 Entry 클래스 내에서 toString() 함수를 사용하십시오. 이렇게하면 디렉토리의 각 항목을 반복하여 한 번에 한 줄씩 출력 할 수 있습니다.

0

TreeMap<String, String>을 사용하면 전화 번호부 목록을 보관할 수 있습니다. TreeMap은 키가 자연 순서 (사람 이름 별)로 정렬되고 디렉토리에 중복 이름이 없음을 보장합니다 (모든 사람 이름은 고유합니다). 항목을 인쇄하려면 간단합니다 String treeMap.get(key);