2011-08-02 40 views
2

我有一个四维数组,其中有一组静态数值。但我的问题是我想从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" } 
     }, 

    } 
}; 

回答

0

取在AsyncTask /后台数据和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 
      } 
     } 
    } 
} 
1

这叫做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") 
... 
+3

这听起来像一个设计师香水) – alphazero

+0

@alphazero你是什么意思? :) –

+1

“)”(这是我的俄罗斯smilie +你的'原始痴迷代码的气味'提醒了一个卡尔文克莱恩广告)) – alphazero

0

公共类资源 {

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

嗨,欢迎来到StackOverflow。请不要转储代码,解释你的思路,以便我们更好地理解你的答案。谢谢。 – Cthulhu