Присвойте данные четырехмерному массиву в RunTime - PullRequest
2 голосов
/ 02 августа 2011

У меня есть четырехмерный массив, для которого у меня есть статический набор значений.Но моя проблема в том, что я хочу получить некоторые данные из API и поместить их в четырехмерный массив во время выполнения .Я не уверен, как это сделать.Любая малейшая идея будет оценена.Вот мой пример, который показывает мое статическое определение моего четырехмерного массива.

static final String listdesc[][][][] =
{
    { // grey
      {  // lightgray
        { "grey", "grey only" },
        { "lightgrey","#D3D3D3" },
        { "dimgrey","#696969" }
      },
      {  // darkgray
        { "grey", "darkgrey" },
        { "sgi grey 92","#EAEAEA" }
      }
    },
    { // blue
      {  // lightblue
        { "blue", "lightblue" },
        { "dodgerblue 2","#1C86EE" }
      },
      {  // darkblue
        { "blue", "darkblue" },
        { "steelblue 2","#5CACEE" },
        { "powderblue","#B0E0E6" }
      }
    },
    { // yellow
      {  // lightyellow
        { "yellow", "lightyellow" },
        { "yellow 1","#FFFF00" },
        { "gold 1","#FFD700" }
      },
      {  // darkyellow
        { "yellow", "darkyellow" },
        { "darkgoldenrod 1","#FFB90F" }
      }
    },
    { // red
      {  // lightred
        { "red", "lightred" },
        { "indianred 1","#FF6A6A" }
      },
      {  // darkred
        { "red", "darkred" },
        { "firebrick 1","#FF3030" },
        { "maroon","#800000" }
      },

    }
};

Ответы [ 3 ]

1 голос
/ 02 августа 2011

Это называется primitive obsession code smell.Вы должны заменить массив 4d строк правильной структурой данных и API для его создания:

ColorsData data = new ColorsData();
ColorSection section = data.addSection("gray");
section.setLightColors(
        "grey only",
        Color.create("lightgray", "#D3D3D3"),
        Color.create("dimgray", "#696969"))
section.setDarkColors(
        "darkgray",
        Color.create("sgi grey 92", "#EAEAEA")
);
section = data.addSection("blue")
...
0 голосов
/ 01 июля 2015

Публичный класс Источник {

public static void main(String[] args)
{

    Random r = new Random();
    int [][][][] a = new int[r.nextInt(10)+1][][][];

    for(int i=0;i<a.length;i++)
    {
        a[i] = new int [(r.nextInt(5)+1)][][];
        for(int j=0;j<a[i].length;j++)
        {
            a[i][j] = new int[(r.nextInt(5)+1)][];
            for(int k=0;k<a[i][j].length;k++)
            {
                a[i][j][k] = new int [(r.nextInt(5)+1)];
                for(int l=0;l<a[i][j][k].length;l++)
                {
                    a[i][j][k][l] = r.nextInt(101)+100;
                }
            }
        }
    }
    for(int i=0;i<a.length;i++)
    {
        System.out.println("3D #"+i);
        for(int j=0;j<a[i].length;j++)
        {
            System.out.println("2D #"+j);
            for(int k=0;k<a[i][j].length;k++)
            {
                System.out.println("1D #"+k);
                for(int l=0;l<a[i][j][k].length;l++)
                {
                    System.out.print(a[i][j][k][l] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }
        System.out.println();
    }
    System.out.println();

}
0 голосов
/ 02 августа 2011

Получите данные в AsyncTask / background и назначьте их в postExecute. Сделайте это.

listdesc[][][][];
for (int i=0; i<listdesc.length; i++) {
    for (int j=0; j<listdesc[i].length; j++) {
        for (int k=0; k<listdesc[i][j].length; k++) {
            for (int m=0; m<listdesc[i][j][k].length; m++) {
                // populate with values
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...