我只是想用一个循环中的一维数组值初始化一个二维数组... 喜欢
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'}};
请纠正我如果我问不可能的话......或者提供另一种方法来获得这样的结果....谢谢
答案 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坐标设置每个单元格;或者您一次填充整个行。