如何使用1D阵列初始化2D数组?

时间:2016-08-26 14:26:09

标签: java arrays multidimensional-array initialization

我只是想用一个循环中的一维数组值初始化一个二维数组... 喜欢

for (int i=0; i<=x ; i++){  // x will be taken by user input(Scanner)
   for (int j=0; j<=3; j++){

     char s[][] = new char[x][6];
     System.out.println("Enter value a : ");
     a = input.nextInt();

     if (a==1){
        char r[] = {'A','B','C','D','E','F'};
        s[i][j] = r ;  // **Here is where I'm stuck at...**
     }
     else if (a==2){
       char r[] = {'G','H','I','J','K','L'};
       s[i][j] = r ;  // **Here is where I'm stuck at...**
     }
   }
}

我希望我的最终2D数组如下所示,以跟随输入x = 2 a = 1,a = 2&amp; a = 1

s[][]={{'A','B','C','D','E','F'},{'G','H','I','J','K','L'},{'A','B','C','D','E','F'}};

请纠正我如果我问不可能的话......或者提供另一种方法来获得这样的结果....谢谢

3 个答案:

答案 0 :(得分:1)

变化:

s[i][j] = r ;

为:

s[i] = r ;

希望这应该有用。

s[i][j]要求在二维char数组中指定一个char(因为你给出了两个维度,我是y,j是x)。 s[i]将整行作为数组返回。由于您希望将第i行设置为{'A', 'B', 'C', 'D', 'E', 'F'},因此您应该使用s[i]

答案 1 :(得分:0)

您可以使用锯齿状的数组来完成您想要的任务:

char[][] s = new char[6][];

for (int i=0; i < 6; ++i) {
    int a = input.nextInt();

    if (a == 1) {
        s[i] = {'A','B','C','D','E','F'};
    }
    else if (a == 2) {
        s[i] = {'G','H','I','J','K','L'};
    }
}

您尝试做的精神似乎是在循环中使用1D数组初始化2D数组。上面的代码片段使用静态1D数组初始化。

答案 2 :(得分:0)

以下是一些代码示例:

char[][] matrix = new char[2][4];
for (int i=0; i < 2; i++) {
  // now create an array for the columns
  matrix[i]= new char[4];
  // now you could do
  for (int j=0; j < 4; j++) {
    matrix[i][j] = ...
  }
  // or
  char[] row = { '1', '2', '3', '4' };
  matrix[i] = row;
}

这个想法是你先说出你有多少行和列。 然后迭代第一个维度,并且可以在每次迭代期间设置第二个维度的值。您可以使用x / y坐标设置每个单元格;或者您一次填充整个