2011-03-30 15 views
0

배열의 요소를 인쇄하기 위해 다른 클래스에서 toString 메서드에 액세스하려고합니다.arraylist의 요소를 표시

info += "Purchases:\n"; 
for(int index = 0; index < purchases.size(); index++){ 
    info += "[" + (index + 1) + "] "; 
    info += purchases.get(index).toString(); 
    info += "\n"; 
} 
나는이 작업을 수행 할 수있는 방법

public String toString(){ 
    String info; 
    DecimalFormat formatter = new DecimalFormat("$#0.00"); 

    info= (date.get(Calendar.MONTH) +1) + "/" + date.get(Calendar.DAY_OF_MONTH) + "/" + date.get(Calendar.YEAR); 
    info += "\t" + vendor + "\t\t"; 
    info += (formatter.format(amount)); 

    return info; 
} 

를 인쇄하기 위해 구입 클래스에 있으며, toString에 액세스하는 코드를 싶습니다

?

+1

을해야

for(Purchase p: purchases) { System.out.println(p); } 

: 루프 향상된에 사용 해보세요? – Aleadam

답변

0

방법은 비효율적이지만 효과가 있습니다.

보고있는 문제는 무엇입니까?

당신은 객체의 toString() 메서드를 오버라이드 (override)하는 경우는

+0

그것은 단지 금액을 인쇄하고 있으며 날짜와 공급 업체가 구매 클래스의 toString 메소드에있는 것처럼 인쇄하기를 원합니다. – trs

+0

구매 클래스의 이전 버전을 실행하는 것처럼 들립니다. 다시 컴파일 해보십시오. 이것이 작동하지 않으면 toString()의 첫 번째 줄에 중단 점을 놓은 다음 디버깅하십시오. –

0

합니다 (NPE withou 제외) 어쨌든 당신이 할 것 같은 경우 NullPointerException이 .toString()에 전화를 떨어지고 있다면, 당신이 그것을 호출 할 필요가없는 같은 순서로 작업 : 인쇄 배열도

myObject.toString(); 

내가 루프에 대한 강화 된 사용 권 해드립니다, 그것은 쉽습니다. 예 : MyObject를 클래스는 toString() 메서드 주의를 무시하는 경우

List<MyObject> mo = new ArrayList<MyObject>(); 
for(MyObject s: listObject){ 
    System.out.print(s); 
} 

위의 예는 완벽하게 작동합니다 : 그냥 모 상상 객체 가득합니다.

난 당신이 제대로 toString() 메서드를 재정의 한 것 같아요 문제가 루프에 있습니다. 작업 오류 당신이 붙어있어 무엇

+0

"구매 p : 구매"유형 불일치 오류가 발생하여 Double에서 변환 할 수 없습니다. – trs

+0

자세한 정보가 필요합니다. 각 변수의 유형을 볼 수 있도록 구매 클래스에 코드를 게시하십시오. 내가 무엇을 할 수 있는지 알아볼 게. – sfrj

+0

@trs :'purchases'는'List '또는 유사하지 않은'List '입니까? –

관련 문제