2014-11-14 4 views
3

toString을 사용하여 객체의 특정 인스턴스를 인쇄하고 어떻게 인쇄합니까?toString을 사용하여 객체의 특정 인스턴스를 인쇄하는 방법

기본적으로 사용자는 정보를 입력하고 있습니다. 입력에 따라 인스턴스 A 또는 인스턴스 B에 저장됩니다. 인스턴스 A와 B는 모두 toString 메소드를 대체하는 서브 클래스입니다. 그래서 사용자로부터의 입력은 배열에 저장됩니다. A의 인스턴스 인 모든 입력이 인쇄되도록하려면 어떻게해야합니까?

이것은 현재 가지고있는 코드이며 작동하지 않습니다.

public static void printA(ABC[] inputs) 
    { 
     for(int i = 0; i < inputs.length; i++) 
     { 
      if(inputs[i] instanceof A) 
      { 
       JOptionPane.showMessageDialog(null, inputs.toString()); 
      } 
     } 
    } 
+0

"* 작동하지 않음 *"과 정확히 일치합니까? 코드를 컴파일 할 수 있습니까? 결과가 있습니까? –

+0

나는 그것을 컴파일 할 수있다 "LClient; @ 20d9896e"출력으로 – Mwam94

답변

0

JOptionPane.showMessageDialog(null, inputs[i].toString()); 

입니다.

+0

이것은 배열의 모든 것을 출력합니다. A의 인스턴스를 출력하는 방법이 있습니까? – Mwam94

+0

은 매번 if (inputs [i] instanceof A)가 true이기 때문에 발생할 수 있습니다. –

0

당신은 inputs를 반복하지만, clients을 테스트하고 있습니다. 이것이 내가 for-each loop을 선호하는 이유이며, StringBuilder을 사용하여 단일 메시지를 작성한 다음 한 번 표시하는 것이 좋습니다. 뭔가 같은

public static void printA(ABC[] inputs) { 
    StringBuilder sb = new StringBuilder(); 
    for (ABC input : inputs) { 
     if (input instanceof A) { 
      sb.append(input).append(System.lineSeparator()); 
     } 
    } 
    JOptionPane.showMessageDialog(null, sb.toString().trim()); 
} 

편집

출력이 있어요 ("Lclient의; 20d9896e @")는 당신이 inputs.toString() 표시되기 때문이다. toString()을 무시하지 않는 배열, 당신은

String msg = Arrays.toString(inputs); 

같은 Arrays.toString(Object[])을 사용할 수 있습니다하지만 당신은 배열에있는 모든 항목을 얻을 수 있습니다. 또한 ClienttoString()을 재정의했는지 확인하십시오. 당신은 당신이 원하는 array.toString()이 아닌 값을 표시하려고 사촌 그냥 필요

+0

StringBuilder를 사용하는 것 외에 다른 방법이 있습니까? 그리고 sb.append는 무엇입니까? – Mwam94

+0

[StringBuilder.append (String)'] (https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html#append%28java.lang.String%29). 그리고 확실히, 당신은'JOptionPane'을 사용할 수 있습니다 만,'A'마다 새로운 메시지를 보여줄 것입니다. –

+0

어쨌든 하나의 JOptionPane에서 A의 모든 인스턴스를 출력 할 수 있습니까? – Mwam94

관련 문제