2014-09-13 1 views
2

에 2 차원 배열의 출력을 인쇄하기위한 중첩 : 나는 루프와 두 차원 배열에 대한 중첩 된 사용하여 아래의 출력을 인쇄하려고루프가 나는 다음과 같은 문제로 어려움을 겪고 된 자바

. 여기

int[][] outputArray = { 

{1,2,3,4,5,6,7,8,9,10}, 

{11,12,13,14,15,16,17,18,19,20}, 

{21,22,23,24,25,26,27,28,29,30}, 

{31,32,33,34,35,36,37,38,39,40}, 

{41,42,43,44,45,46,47,48,49,50}, 

{51,52,53,54,55,56,57,58,59,60}, 

{61,62,63,64,65,66,67,68,69,70}, 

{71,72,73,74,75,76,77,78,79,80} 

}; 

올바른 것 같다 배열 내 코드입니다 :

public void printArrayStatement() { 
    System.out.print("int[][] outputArray = {"); 

    for (int i = 0; i < myArray1.length; i++) { 

     if (myArray1.length >= 1) 
      System.out.print("\n" + "{" + myArray1[0][0]); //I am trying to remove the initial comma here but my logic is wrong. It is printing 1 first on each line. 

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

      System.out.print("," + myArray1[i][j]); 

     } 

    } 
    System.out.println("};"); 
}// end method 

나는 또한 할 수있는 '지금은 아래의 중첩 루프와 함께 몇 가지 문제가 있어요

public ExerciseTwo() { 
    myArray1 = new int[8][10]; 

    for (int i = 0; i < myArray1.length; i++) { 
     for (int j = 0; j < myArray1[i].length; j++) { 
      myArray1[i][j] = (i * myArray1[i].length) + j + 1; 
     }// end inner loop 
    }// end outer loop 
}// end constructor 

각 줄의 끝에서}를 얻는 방법을 알아내는 것 같습니다. 나는 if 문이 필요하다고 생각하지만 코드를 이해할 수 없다!

답변

2

다음 코드는 필요에 따라 작동합니다. :

System.out.println("int[][] outputArray = {"); //int[][]outpuArray = { 
for (int i = 0; i < myArray1.length; i++) { 
    System.out.print("{");      //{ 
    int j; 
    for (j = 0 ; j < myArray1[i].length - 1; j++) { 
     //1, 2,...9, i.e not last one. 
     System.out.print(myArray1[i][j]+", "); //1, 2,...9, then terminate 
     //Not used if to check for last one because it would increase time complexity 
    } 
    System.out.print(myArray1[i][j]+"}");  //10} 
    if(i!=myArray1.length -1){     
     System.out.println(", ");    //, only if it is not last one 
    } 
} 
System.out.println("\n}"); 

출력 :

int[][] outputArray = { 
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 
{11, 12, 13, 14, 15, 16, 17, 18, 19, 20}, 
{21, 22, 23, 24, 25, 26, 27, 28, 29, 30}, 
{31, 32, 33, 34, 35, 36, 37, 38, 39, 40}, 
{41, 42, 43, 44, 45, 46, 47, 48, 49, 50}, 
{51, 52, 53, 54, 55, 56, 57, 58, 59, 60}, 
{61, 62, 63, 64, 65, 66, 67, 68, 69, 70}, 
{71, 72, 73, 74, 75, 76, 77, 78, 79, 80} 
} 
+0

코드에서 어떤 일이 일어나고 있는지 설명해 주시겠습니까? 왜 (myArray1 [i] [j])를 포함하는 두 개의 print 문이 필요합니까? 그 배열 요소를 두 번 인쇄하지 않아야합니까? – Mac

+0

@ macattack 주석으로 설명하려고했습니다. 아직도 의심이 든다면 말해봐. – afzalex

+0

감사합니다. 이제 나에게 의미가있다. – Mac

0

간단하게 해결할 수있는 복잡한 코드를 만드는 것처럼 보입니다 ... 끝에 있지 않으면 쉼표를 인쇄하고 끝 부분이면 인쇄하지 마십시오

for (int i = 0; i < myArray1.length; i++) { 
    for (int j = 0; j < myArray1[i].length; j++) { 
    // here print out myArray1[i][j] 
    if (j != myArray1[i].length - 1) { 
     // here print out comma if j is not == myArray1[i].length - 1 
    } 
    } 
    System.out.println(); 
} 

또 다른 옵션은 java.util.Arrays.toString(...)

난 당신이 {} 문자를 인쇄 할 이유를 모르겠어요 사용하는 것입니다. 당신이 그들을 필요로 확신합니까?

+0

감사 : 여기

는 코드입니다. 네, 대괄호가 필요합니다. 출력은 다른 메소드에 복사되어 배열을 초기화하여 출력이 정확해야합니다. – Mac

+0

@macattack : 이것은 여전히 ​​매우 이상하게 생각합니다. 실제로 배열 자체를 전달하고 컴파일러에만 의미가있는 일부 String 표현이 아닌 경우 다른 방법을 사용하면 훨씬 효과적입니다. 색이 매우 혼란 스럽습니다. –

+0

if 문을 사용하고 위에서 언급 한대로 별도의 print 문을 사용하여 대괄호를 추가 했으므로 이제 작동 중입니다. – Mac

0

귀하의 내부 루프는 0에서 시작 :

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

당신은 여전히 ​​외부 루프 내부, 닫는 중괄호에 관해서는

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

이 단지 내부 루프 후를 인쇄해야합니다 :

System.out.println("}"); 
} 
System.out.println("};"); 
+0

내부 루프가 1에서 시작해야하는 이유를 자세히 설명해주십시오. OP가 요청하는 내용에 대해 혼동을 느껴야합니다. –

+0

위의'if' 블록 안에 이미 명시 적으로 인쇄 된 첫 번째 항목을 건너 뜁니다. –

+0

if 문에는 여전히 문제가 있습니다. 예를 들어, 2 행은 11로 시작하고 3 행은 21과 같이 시작해야합니다. – Mac

0

내부 루프 우리가 '}'를 인쇄하고 그냥 마지막 줄을 인쇄하는 경우 우리가 인쇄해야 다음하지 않을 경우 우리는 확인 후 쉼표도. 응답에 대한

for (int i = 0; i < myArray1.length; i++) { 
    if (myArray1.length >= 1) 
     System.out.print("\n" + "{" + myArray1[0][0]); 
    for (int j = 0; j < myArray1[i].length; j++) { 
     System.out.print("," + myArray1[i][j]); 
    } 

    // Print ',' if we are not at the end. 
    System.out.print("}"+(i==myArray1.length-1?"":",")); 
} 
System.out.println("\n};"); 
관련 문제