2009-09-03 4 views
0

int 배열의 값을 로컬 파일에 인쇄하려고합니다. 그러나, 나는 대신 힙 주소의 자신의 표준 양식 (1,2,3)의 정수를 출력 할 수있는 방법을 찾을 수 없습니다 : ([[email protected])배열을 Java의 텍스트 파일에 저장

내 코드는 다음과 같습니다 :

 PrintWriter pr = new PrintWriter("file"); 

     for (int i=0; i<views.length ; i++){ 
      pr.println(Arrays.toString(views)); 
     } 
     pr.close(); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
     System.out.println("No such file exists."); 
    } 
} 

무엇 내가 틀리게 할 수 있을까?

답변

0

배열의 toString() 메서드는 "[I @ 1befab0"문자열을 제공합니다.
그래서 배열을 반복해야합니다. 파일
에 문자열을 쓰기 위해

StringBuilder b = new StringBuilder(); 
for (Object o : views) { 
    b.append(String.valueOf(o)); 
} 
    1. 문자열을 구축하기위한 (당신은 디버그의 값을 확인할 수 있습니다) :

      두 가지의 문제를 분할 할 수 있습니다. ..

  • 5

    전체 ar을 인쇄하려고합니다. ray out 매번. (. 당신이 Exception을 잡기있는 것은 일반적으로 좋은 생각이 생각이라는 사실을 내가 만든 한 최소한의 변경, 당신은 일반적으로 finally 블록에 작가를 닫아야합니다.)

    try 
    { 
        PrintWriter pr = new PrintWriter("file");  
    
        for (int i=0; i<views.length ; i++) 
        { 
         pr.println(views[i]); 
        } 
        pr.close(); 
    } 
    catch (Exception e) 
    { 
        e.printStackTrace(); 
        System.out.println("No such file exists."); 
    } 
    
    +2

    모든 반복에서 PrintWriter를 닫는 것이 실수 인 것 같습니까? – waxwing

    +0

    많은 도움을 주셔서 감사합니다! –

    +0

    @waxwing : Doh! 고정... –

    0

    이 시도 배열을 출력 할 때 배열의 toString() 함수를 호출합니다. 따라서, 배열에 많은 값이 존재할 경우 "views"배열의 참조 값이 표시됩니다.

    Jon은 지적했듯이 실제로 배열의 값을 인쇄해야합니다. 물론 이것은 배열에 toString을 통해 멋지게 형식화 된 객체가 포함되어 있다고 가정합니다 (또는 배열에 프리미티브가 있음).

    0

    배열 내용을 유지하려면 파일을 쓰고 있습니까? 그렇다면 serialize the object (array in this case). 링크 된 페이지에서 값을 검색 할 수 있도록 객체를 비 직렬화하는 방법에 대한 링크가 있습니다.

    2

    배열은 아마도 다중 차원 배열입니까? 그렇다면 java.util.Arrays.deepToString을 사용하십시오.

    PrintWriter pr = new PrintWriter("file"); 
    
    for (int i=0; i<views.length ; i++){ 
        pr.println(Arrays.deepToString(views)); 
    } 
    pr.close(); 
    
    0

    여기서 대부분의 대답은 배열을 한 번에 모두 인쇄하는 대신 배열을 반복해야한다는 사실에 중점을 둡니다. 그러나 Arrays.toString (...)은 Arrays.asList (...). toString()과 같은 것을 반환해야하는데, 이는 덧붙여 말하면 [1,2,3] 형식이어야합니다.

    따라서 매트가 대답 한 것처럼 views은 실제로 이중 중첩 배열을 제안합니다.

    고정 코드는이 경우에있을 것입니다 :

    try { 
        PrintWriter pr = new PrintWriter("file"); 
    
         for (int i=0; i<views.length ; i++){ 
          pr.println(Arrays.toString(views[i])); 
         } 
         pr.close(); 
        } 
        catch (Exception e) 
        { 
         e.printStackTrace(); 
         System.out.println("No such file exists."); 
        } 
    } 
    
    0
    PrintWriter pr = new PrintWriter("file");   
    for (int i=0; i<views.length ; i++){    
    pr.println("" + views[i]);   
    }   
    pr.close(); 
    

    그것은 그것보다 훨씬 더 쉽게 얻을하지 않습니다.