2014-11-29 3 views
0

그래서 배열의 다른 인스턴스를 인쇄해야합니다. 아래 코드를 사용하십시오. 배열의 모든 내용은 아무 것도 채워지지 않은 배열 부분을 인쇄합니다. 각 if 문에 break 문을 추가하면 해당 배열의 마지막 인스턴스 만 인쇄되고 저장된 모든 것은 인쇄되지 않습니다.배열에 저장된 객체의 인스턴스를 인쇄하는 방법

public static void display(ExampleA[] example) 
{ 
    for(int pos = 0; pos < example.length; pos++) 
    { 
     output += "Example number " + (i + 1); 
     if(example[pos] instanceof A) 
     { 
       output += example[pos].toString() + "\n\n";    
     } 

     if(example[pos] instanceof B) 
     { 
      output += example[pos].toString() + "\n\n"; 
     } 

    } 

내가하고 싶은 것은 인스턴스에 의해 함께 그룹화 된 배열의 모든 것을 인쇄하는 것입니다. 배열 전체가 부분적으로 비어있는 것은 아닙니다.

+0

는 테스트 케이스를 제공 사용하는 것보다 훨씬 빠르다로, 문자열을 추가 할 StringBuilder를 사용하여 조사한다 : 여기에 코드를 사용하는 예제입니다. 나는 당신의 문제를 이해하지 못합니다. – luuksen

+0

그래서, 예를 들어 프로그램을 실행하면 배열에 총 3 개의 객체가 저장됩니다. 왜 배열의 모든 공백이 JOptionPane에 인쇄되는지 이해할 수 없습니다. 그리고 break 문을 추가하면 인스턴스의 마지막 입력 만 인쇄됩니다. – Mwam94

+0

배열 요소가 비어 있지 않습니다. 'null '요소를 피하려고합니까? 클래스 계층 구조는 어떻게 생겼습니까? 'casesA'에는 무엇이 있습니까? "인스턴스별로 함께 그룹화"한다는 것은 무엇을 의미합니까? 또한 용어 문제가있는 것처럼 보입니다. 클래스, 수퍼 클래스 및 인스턴스의 정의를 확인하십시오. –

답변

1

두 개의 output 변수를 만들 수 있습니다. 하나는 A 인스턴스이고 다른 하나는 B 인스턴스입니다. 그런 다음 각 인스턴스를 해당 출력 변수에 추가하고 끝에 출력 변수를 인쇄 할 수 있습니다.

public static void display(ExampleA[] example) 
{ 
    for(int pos = 0; pos < example.length; pos++) 
    { 
     if(example[pos] instanceof A) 
     { 
      outputA += "Example number " + (i + 1); 
      outputA += example[pos].toString() + "\n\n";    
     } 

     if(example[pos] instanceof B) 
     { 
      outputB += "Example number " + (i + 1); 
      outputB += example[pos].toString() + "\n\n"; 
     } 

    } 

    System.out.println("A:\n" + outputA); 
    System.out.println("B:\n" + outputB); 
} 

당신은 또한 +=

+0

Hey Greg! 그래서 이것은 실제로 작동하지 않습니다. 모든 인스턴스를 인쇄하지 않습니다. – Mwam94

+0

정말 미안하지만 배열의 번호를 매길 필요가 생길 수있는 중요한 정보를 놓쳤다. 그래서 출력 + = "Number :"+ (i + 1) + "\ n"; 어떤 문제가 발생 했습니까? – Mwam94

+0

그럼 ... 아직도 문제가 있습니까? 그렇다면, 무엇? – Greg

관련 문제