繁体   English   中英

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

[英]How can I initialize an 2D array with 1D array?

我只想使用循环中的1D数组值初始化2D数组...

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&a = 1

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

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

更改:

s[i][j] = r ;

至:

s[i] = r ;

希望这应该工作。

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

您可以通过使用锯齿状数组来实现所需的目标:

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数组。 上面的代码段使用静态一维数组初始化来实现。

以下是一些代码示例,助您一臂之力:

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坐标设置每个单元格 或您一口气填满整

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM