2013-03-11 3 views
0

2D 배열에서 값을 출력하도록 변환했지만 그 위치를 얻는 방법을 모릅니다. . 여기 2D 배열 위치 (col, row)와 값을 1D 배열에 저장하는 1D 배열에 Covert 2D 배열

내 코드 :

public static int[] convert(int [][]twodarray) 
{ 
    int[] onedarray = new int[twodarray.length * twodarray.length]; 
    for(int i = 0; i < twodarray.length; i ++) 
    { 
     for(int s = 0; s < twodarray.length; s ++) 
     { 
      onedarray[(i * twodarray.length) + s] = twodarray[i][s]; 
     } 
    } 
    return onedarray; 
} 

public static int [] printonedarray(int [] onedarray) 
{ 
    System.out.print("onedarray: "); 

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

      System.out.print(onedarray[i] + "\t"); 

    } 
    System.out.println(); 
    return onedarray; 
} 

답변

0

x 최하위 열의 원래 길이이다 A[i] 원래 좌표,는 A[i/x][i%x]되어야보다하여 2 차원 어레이는 지그재그 배열이 아닌 것으로 가정하여 2/d 어레이

0

그래, 내가 당신을 믿을만하게하는지 잘 모르겠다. 그러나 나는 이렇게 이해합니다 :
당신은 2 개의 희미한 빛이 있습니다. 배열로 변환하고 1 dim로 변환하려고합니다. 정렬.
따라서 첫 번째 줄과 첫 번째 줄을 준비하고 싶습니다.
그런 다음이 값을 1 dim의 forst 위치에 추가하려고합니다. 정렬.
다음 행을 읽고이 값을 추가하려고합니다.
만약 내가 옳다면 나는 당신의 1 차원 어레이에 대한 arrayList를 제안한다. 당신은 coloumns가 얼마나 깊은 지 모르기 때문에. 그리고 ArrayList는 동적입니다. 요소를 추가하기 만하면 위치를 지정할 필요가 없습니다.
코드 제안이 매우 좋았으며 방금 ArrayList로 변환했습니다.

import java.util.ArrayList; 

    public class test 
    { 

    public static ArrayList<Integer> convert(int [][]twodarray) 
    { 
     ArrayList<Integer> onedarray = new ArrayList<Integer>(); 
     for(int i = 0; i < twodarray.length; i ++) 
     { 
      for(int s = 0; s < twodarray[i].length; s ++) 
      { 
       onedarray.add(twodarray[i][s]); 
      } 
     } 
     return onedarray; 
    } 

    public static ArrayList<Integer> printonedarray(ArrayList<Integer> onedarray) 
    { 
     System.out.print("onedarray: "); 

     for(int i = 0; i < onedarray.size(); i++) 
     { 

       System.out.print(onedarray.get(i) + "\t"); 

     } 
     System.out.println(); 
     return onedarray; 
    } 
} 

질문을 놓친 경우 "잘못된 답변"에 대해 사과합니다.
도움이되기를 바랍니다.

+0

답변이 도움이되는지 알고 싶습니다. – j0chn

관련 문제