2012-02-08 1 views
1

코드는 다음과 같습니다. 원하는 모든 것은 1s가되는 것입니다 ... 충분히 간단합니까? 그냥 밖으로 인쇄, 인쇄 문에서매우 간단한 코드 (2 차원 배열에 vars 할당) 작동하지 않습니다

int[][] myArr = new int[100][100]; 
System.out.println(myArr); 

for (int i =0; i< myArr.length; i++) { 
    for (int j=0; j< myArr[i].length; j++) { 
     myArr[i][j] = 1; 
    } 
} 

[[I @ 22911fb5 은 (내가이게 무슨 뜻인지 단서가 없다?) 어떤 도움 주셔서 감사합니다, 필자는 다른 곳을 두 번 괄호를 넣어 시도하지만 아무 것도

에 대한
+0

인쇄 문 하나만 표시됩니다. '[I @ 22911fb5'는 배열의 기본'toString' 때문입니다. –

답변

1

이 오래된 밤나무 ...

이 시도 :

System.out.println(Arrays.toString(myArr)); 

는 슬프게도, 배열이 toString() 메소드를 오버라이드 (override)하지 않습니다. 디폴트의 ​​구현 (Object.java)은 [를 인쇄 해, 데이터 형을 나타내는 문자를, 다음에 @, 해시 코드를 16 진수로 나타냅니다.

+0

그것은 2 차원입니다. 'Arrays.toString'은별로 도움이되지 않습니다. ;) –

5

배열의 기본값 toString 메서드가 기본 Object 메서드처럼 작동하기 때문에 이는 혼란스러운 해시 코드를 제공하기 때문입니다.

System.out.println(Arrays.deepToString(arr)) 

은 중괄호로 묶은 멋진 결과를 제공해야합니다.

+2

+1 멋지다. 'deepToString()'에 대해 모르 셨습니다 – Bohemian

0

그런 배열을 인쇄 할 수는 없습니다. 이와 같이 인쇄하려고하면 Java는 배열의 메모리 주소를 반환하는 기본 객체의 toString()을 호출합니다. 당신과 같이, 루프에서 요소를 인쇄해야합니다

int[][] myArr = new int[100][100]; 
    //Fill the array 
    for (int i =0; i< myArr.length; i++) { 

     for (int j=0; j< myArr[i].length; j++) { 

      myArr[i][j] = 1; 

     } 

    } 
    //Print the array 
    for (int i =0; i< myArr.length; i++) { 

     for (int j=0; j< myArr[i].length; j++) { 

      System.out.print(myArr[i][j]); 

     } 
     System.out.println(""); 

    } 
+0

이 답변을 주셔서 감사합니다! 그냥 분명히, 매트릭스 형식으로 인쇄 할 수있는 방법이 없습니다 (?) arraylists의 경우와 같이 인쇄 할 때 행렬 형식으로 출력됩니다 ([[], [], ....)) –

0

코드는 아마 잘 작동합니다. 디버깅 문은 약간의 작업을 수행 할 수 있습니다. System.out.println()Object로부터 상속 된 기본 toString()의 기능입니다 [[[email protected] (메모리 주소) 같은 것을 뱉어 myArrtoString() 메소드를 호출합니다. 값이 무엇인지보고 싶다면 System.out.println(myArr[i][j])을 내부 루프 내에서 시도하십시오.

관련 문제