2015-01-20 4 views
0

내가 읽고있는 책에서 코드를 재현하려고 시도했으나 제대로 작동하지 않게되었습니다. 코드는 다음과 같습니다Java가있는 3 차원 배열 (Java : The Complete Reference, 9th edition의 테스트 예제)

public class ThreeDArray { 

public static void main(String[] args) { 
    int threeD [][][] = new int [3][4][5]; 
    int i, j, k; 
    for (i = 0; i < 3; i++) { 
     for (j = 0; j < 4; j++) { 
      for (k = 0; k < 5; k++) { 
       threeD [i][j][k] = i*j*k; 
      } 
     } 
     for (i = 0; i < 3; i++) { 
      for (j = 0; j < 4; j++) { 
       for (k = 0; k < 5; k++) { 
        System.out.print(threeD[i][j][k]+" "); 
       } 
       System.out.println(""); 
      } 
      System.out.println(""); 
     } 
    } 
} 
} 
는 내가이 출력 얻고

:.

0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 

0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 

0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 

내가 여기에 모두 0을 얻고 내가 여기에 실수를 찾을 수 없습니다 여기에 어떤 문제가 있는지 알려 주시기 바랍니다

+0

좋아요, 당신은 우리에게 어떤 일이 일어나지 않았는지 알려주었지만, 대신에 무엇이 일어나야하는지 알려주지 않았습니다. – MattD

답변

1

잘못된 브라켓 배치합니다. : 너의 두번째,283,147,루프는 처음으로 외부에 있어야한다 : 당신이 i이 두 번째 반복에 종료의 첫 번째 루프를 의미 인쇄 루프와 i을 증가하고 당신이 그것을 한 방법으로

int i, j, k; 
for (i = 0; i < 3; i++) { 
    for (j = 0; j < 4; j++) { 
     for (k = 0; k < 5; k++) { 
      System.out.printf("%d %d %d %d %n", i, j, k, i * j * k); 
      threeD [i][j][k] = i*j*k; 
     } 
    } 
} // move to here ... 
for (i = 0; i < 3; i++) { 
    for (j = 0; j < 4; j++) { 
     for (k = 0; k < 5; k++) { 
      System.out.print(threeD[i][j][k]+" "); 
     } 
     System.out.println(""); 
    } 
    System.out.println(""); 
} 
// ... from here 

. 이제는 다음과 같이 인쇄됩니다 :

0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 

0 0 0 0 0 
0 1 2 3 4 
0 2 4 6 8 
0 3 6 9 12 

0 0 0 0 0 
0 2 4 6 8 
0 4 8 12 16 
0 6 12 18 24
+0

감사합니다. Andy! 나는 그것을 놓쳤다는 것을 믿을 수 없다. – fthnm2014

+0

@ fthnm2014. 그것이 가치있는 일이라면,'for' 밖의 루프에 대해'int'를 선언하는 것을 피할 수 있습니다. 괄호를 잘못된 위치에 다시 놓고'int i, j, k' 선언을 제거하고'for' 루프를 for (int ...)로 선언하십시오. 당신의 컴파일러는 아마도'Duplicate local variable i' 라인을 따라 에러를 던졌을 것입니다. –