2013-03-11 2 views
0

Мне удалось преобразовать его для вывода значений из 2D-массива, но понятия не имею, как получить позицию ,Скрытый 2D-массив в 1D-массив, сохраняющий положение 2D-массива (col, row) и значение в 1D-массиве

Вот мой код:

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

при условии, что ваш 2-d массив не зазубренный массива, чем оригинальные cordinates для A[i] должны быть A[i/x][i%x] где x является исходной длиной значащей колонки вашего 2/d array

0

Хорошо, я не уверен, получу ли вы вас. Но я так понимаю:
У вас 2 dim. массив и хотите преобразовать его в 1 тусклый. массив.
Поэтому вы хотите подготовить первую колому и первую строку.
Затем вы хотите добавить это значение в позицию forst 1 dim. массив.
Затем вы читаете следующую строку и хотите добавить это значение и так далее.
Если я прав, я предлагаю массивList для вашего 1-мерного массива. Потому что вы не знаете, насколько глубоки Coloumns. И ArrayLists являются динамическими. Вы можете просто добавить элемент и не нужно указывать позицию.
Ваше предложение кода было довольно хорошим, и я просто преобразовал его в 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

Смежные вопросы